PDA

View Full Version : [C++] ThreadPool


tomminno
08-08-2008, 12:55
Ho implementato un threadpool in c++ in cui accodo un puntatore a metodo che poi verrà richiamato non appena un thread è disponibile.
Ora il problema è chiaramente che un oggetto che accoda del lavoro potrebbe essere distrutto per i motivi più vari e non avrei modo per gestire questa condizione.

Come si può implementare un threadpool sicuro?

cionci
10-08-2008, 10:06
Spiega meglio, che intendi per "un oggetto che accoda del lavoro potrebbe essere distrutto" ?
Ti riferisci al fatto che chi ha accodato il lavoro potrebbe terminare la sua esistenza prima che il lavoro sia stato eseguito dalla coda ?

WarDuck
10-08-2008, 13:40
Ma gli oggetti in C++ non vengono distrutti solo manualmente?

cionci
10-08-2008, 13:48
Ma gli oggetti in C++ non vengono distrutti solo manualmente?
No, solo quelli allocati dinamicamente devono essere distrutti manualmente.

In ogni caso, se ho capito il problema, dovrebbe bastare un observer, alla distruzione dell'oggetto si invia un messaggio sull'observer, l'observer va richiamare un metodo del gestore della coda per ogni messaggio.
Ovviamente servirebbe un id univoco per determinare la lista dei lavori in coda inseriti da quell'oggetto.