peppedx
30-11-2004, 08:33
Dunque vi volevo sottoporre un problema pratico e la soluzione che ho adottato per capire se qualcuno di voi può suggerirmi qualcosa di meglio.
Ho una elaborazione da eseguire che è compostra da n Thread (uguali) il cui numero è conosciuto solo a runtime. Per poter eseguire il passo successivo è necessari che tutti gli n thread abbiano finito il compito (in particolare ogni thread effettua delle comunicazioni via rete).
Il modo che ho utilizzato è stato questo: Dato il compito da eseguire nella classe chiamata "DiscoverTranscodeService" ho creato un membrio (intero) di questa classe chiamato pings, ho creato una classe interna che incapsula il thread. Al momento di dover utilizzare questi thread, conosciuto il loro numero ho posto un intero target uguale a questo numero e fatto si che ogni thread finita l'elaborazione incrementasse pings.
Il thread principale controlla ogni 500msec. pings: se pings==target allora vado avanti.
Questo metodo funziona...però non mi pare sia il massimo di pulizia ed eleganza...Come risolvete voi problemi di questo tipo?
Saluti!
Ho una elaborazione da eseguire che è compostra da n Thread (uguali) il cui numero è conosciuto solo a runtime. Per poter eseguire il passo successivo è necessari che tutti gli n thread abbiano finito il compito (in particolare ogni thread effettua delle comunicazioni via rete).
Il modo che ho utilizzato è stato questo: Dato il compito da eseguire nella classe chiamata "DiscoverTranscodeService" ho creato un membrio (intero) di questa classe chiamato pings, ho creato una classe interna che incapsula il thread. Al momento di dover utilizzare questi thread, conosciuto il loro numero ho posto un intero target uguale a questo numero e fatto si che ogni thread finita l'elaborazione incrementasse pings.
Il thread principale controlla ogni 500msec. pings: se pings==target allora vado avanti.
Questo metodo funziona...però non mi pare sia il massimo di pulizia ed eleganza...Come risolvete voi problemi di questo tipo?
Saluti!