File: test_conditional_nested.ml

package info (click to toggle)
ocaml-dscheck 0.5.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 292 kB
  • sloc: ml: 1,290; sh: 6; makefile: 3
file content (22 lines) | stat: -rw-r--r-- 610 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
module Atomic = Dscheck.TracedAtomic

let test () =
  let b = Atomic.make 0 in
  let c = Atomic.make 0 in
  let ok = Atomic.make false in
  let seen_b = ref (-1) in

  Atomic.spawn (fun () -> Atomic.set b 1);
  Atomic.spawn (fun () ->
      Atomic.set c 1;
      Atomic.set b 2);
  Atomic.spawn (fun () ->
      if Atomic.get c = 0 then (
        seen_b := Atomic.get b;
        if !seen_b = 0 then Atomic.set ok true))

(* Atomic.final (fun () ->
    Format.printf "seen_b=%i b=%i c=%i ok=%b@." (!seen_b) (Atomic.get b) (Atomic.get c)
      (Atomic.get ok)) *)

let () = Atomic.trace ~record_traces:true test