In questa lezione abbiamo visto i principi fondamentali della concorrenza, e piu' i particolare il modello di programmazione a thread. Dal punto di vista teorico, abbiamo introdotto i concetti di memoria condivisa e passaggio di messaggi, nonche' alcuni modelli di concorrenza (spazio di tuple, modello ad attori, algebre dei processi).
In fondo alla pagina trovate gli esempi di codice visti a lezione.
In this lecture we have studied the fundamentals of concurrency, and specifically the thread programming model. On the theoretical side, we've introduced the concepts of shared memory and message passing, as well as some concurrency models (tuple space, actor model, process calculus).
Hello, World
#!/usr/bin/python from threading import Thread from time import sleep from random import randint def hello(): sleep(randint(0,3)) print 'Hello' def world(): sleep(randint(0,3)) print 'World' Thread(target=hello).start() Thread(target=world).start()
A Producer/Consumer Example
#!/usr/bin/python from threading import Thread, Event from random import randint d=0 e=[Event(),Event()] e[1].set() def hello(e): for i in range(5) : e[1].wait() global d d=d+1 e[0].set() e[1].clear() def world(e): for i in range(5) : e[0].wait() global d print d*2 e[0].clear() e[1].set() Thread(target=hello, args=(e,)).start() Thread(target=world, args=(e,)).start()