1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure main()
shared a1_ready := create_semaphore(0)
shared b1_ready := create_semaphore(0)
create_thread(thread_a)
create_thread(thread_b)
end procedure
procedure thread_a()
statement a1
signal(a1_ready)
wait(b1_ready)
statement a2
end procedure
procedure thread_b()
statement b1
wait(a1_ready)
signal(b1_ready)
statement b2
end procedure