C'era un esempio di applet Java (probabilmente ancora è) che si utilizzava per testare quale programmazione algoritmo utilizzato da JVM e dal sistema operativo sottostante. Ha animato due barre (o facoltativamente più? Non ricordo) gradualmente riempite, ciascuna animata da un thread diverso con la stessa priorità.
Un equivalente che consente di stampare:
red 1
red 2
green 1
red 3
green 2
ecc alla console, mi sembra essere la cosa più vicina nello spirito alla ossa nude natura del "ciao, mondo". Cioè: "posso fare in modo che il computer faccia qualcosa di inutile ma visibile?"
Quindi in ogni thread si vorrebbe una serie di pause (o loop di occupato o sleeps, fino a te e che si potrebbero influire sull'output a seconda di come è pianificata la concorrenza), ciascuna seguita da qualche output. Potresti voler sincronizzare l'output, non veramente essenziale, ma se una riga dovesse essere suddivisa dallo scheduler sarebbe imbarazzante da leggere.
Quindi, se il modello di concorrenza è cooperativo (thread neolitici, o forse qualcosa basato su co-routine), è necessario aggiungere anche rese idonee, per impedire il riempimento della barra rossa prima dell'avvio della barra verde. Questo ti dice che hai reso efficacemente il tuo codice concorrente interlacciato.
fonte
2011-10-07 08:50:32
Grazie! Anche se è un po 'asciutto, penso che questa sia la migliore delle risposte finora. – jberryman