Jump to content

Checkpoint synchronization: Difference between revisions

Python example
(added Perl 6)
(Python example)
Line 2,417:
Thread #1 is done.
Press ENTER to exit</pre>
 
=={{header|Python}}==
<lang Python>
"""
 
Based on https://pymotw.com/3/threading/
 
"""
 
import threading
import time
import random
 
 
def worker(workernum, barrier):
# task 1
sleeptime = random.random()
print('Starting worker '+str(workernum)+" task 1, sleeptime="+str(sleeptime))
time.sleep(sleeptime)
print('Exiting worker'+str(workernum))
barrier.wait()
# task 2
sleeptime = random.random()
print('Starting worker '+str(workernum)+" task 2, sleeptime="+str(sleeptime))
time.sleep(sleeptime)
print('Exiting worker'+str(workernum))
 
barrier = threading.Barrier(3)
 
w1 = threading.Thread(target=worker, args=((1,barrier)))
w2 = threading.Thread(target=worker, args=((2,barrier)))
w3 = threading.Thread(target=worker, args=((3,barrier)))
 
w1.start()
w2.start()
w3.start()
</lang>
Output:
<pre>
Starting worker 1 task 1, sleeptime=0.26685336937182835
Starting worker 2 task 1, sleeptime=0.947511912308323
Starting worker 3 task 1, sleeptime=0.6495569605252262
Exiting worker1
Exiting worker3
Exiting worker2
Starting worker 2 task 2, sleeptime=0.5585479798026259
Starting worker 3 task 2, sleeptime=0.4104925281220747
Starting worker 1 task 2, sleeptime=0.15963562165203105
Exiting worker1
Exiting worker3
Exiting worker2
</pre>
 
=={{header|Racket}}==
Cookies help us deliver our services. By using our services, you agree to our use of cookies.