PDA

Visualizza la versione completa : [C++/UNIX] Thread suspension


Infernal
27-09-2009, 21:25
Ho bisogno di poter sospendere incondizionatamente di alcuni thread, e poi farli ripartire totalmente dall'esterno, cioé senza che i thread che devono essere fermati si accorgano di ció:

io sto scrivendo un programma che simula il comportamento di un robot in un mondo virtuale, e a me serve poter stoppare la simulazione e farla ripartire a piacimento, il che vorrebbe dire che devo sospendere i thread che si occupano della simulazione (tipo il thread che esegue il codice del robot), senza che essi cooperino (primo perché non avrebbe senso, é come mettere in pausa una canzone e doverglielo chiedere, secondo perché il codice che gira sul robot non lo scrivo io e quindi non posso inserirci delle routine che controllano se é stato richiesto uno stop).

Il problema é che il reference di pthread dice che suspend e resume non sono implementate perché la sospensione incondizionata di un thread puó causare problemi se il thread ha bloccato un mutex(e questo problema non mi tocca, perché sospenderei anche tutti i thread che potrebbero essere in attesa del rilascio del mutex).

Qualcuno conosce una soluzione al problema? i debugger come fannno a sospendere un programma? non posso fare la stessa cosa che fanno i debugger?

Grazie mille in anticipo!

Ps: non sarebbe meglio mettere le pthread_supend e resume nella libreria, avvisando dei problemi che possono causare, e lasciare scegliere al programmatore se usarle o no?

Loading