source: doc/papers/concurrency/examples/Pingpong.py@ 8ff586c

ADT arm-eh ast-experimental enum forall-pointer-decay jacob/cs343-translation new-ast new-ast-unique-expr pthread-emulation qualifiedEnum
Last change on this file since 8ff586c was a573c22, checked in by Peter A. Buhr <pabuhr@…>, 6 years ago

example programs updated for concurrency paper

  • Property mode set to 100644
File size: 731 bytes
RevLine 
[1e5d0f0c]1def PingPong( name, N ):
[a573c22]2 partner = yield # get partner
3 yield # resume scheduler
[1e5d0f0c]4 for i in range( N ):
5 print( name )
[a573c22]6 yield partner # execute next
[1e5d0f0c]7 print( "end", name )
[17c6c1c3]8
[1e5d0f0c]9def Scheduler():
[a573c22]10 n = yield # starting coroutine
11 try:
12 while True:
13 n = next( n ) # schedule coroutine
14 except StopIteration:
15 pass
[17c6c1c3]16
[1e5d0f0c]17pi = PingPong( "ping", 5 )
18po = PingPong( "pong", 5 )
[a573c22]19next( pi ) # prime
20pi.send( po ) # send partner
21next( po ) # prime
22po.send( pi ) # send partner
[17c6c1c3]23
[1e5d0f0c]24s = Scheduler();
[a573c22]25next( s ) # prime
[17c6c1c3]26try:
[1e5d0f0c]27 s.send( pi ) # start cycle
[a573c22]28except StopIteration: # scheduler stopped
29 pass
[1e5d0f0c]30print( "stop" )
[17c6c1c3]31
32# Local Variables: #
33# tab-width: 4 #
[a573c22]34# compile-command: "python3.7 Pingpong.py" #
[17c6c1c3]35# End: #
Note: See TracBrowser for help on using the repository browser.