Buonasera,
mi sono accorto di non aver capito lo scoped_ptr di boost. Pensavo che, mettendolo come campo dati di una classe Thread uno scoped_ptr specializzato con un thread e lanciando questo thread nel costruttore di Thread, al momento della distruzione dell'oggetto Thread venisse distrutto pure l'oggetto thread e di conseguenza cessasse l'esecuzione del thread associato allo scoped_ptr. Così non è, il thread associato allo scoped_ptr continua a essere eseguito. Posto il codice:
#include <boost/thread.hpp>
#include <iostream>
#include <stdlib.h>
using namespace std;
class Thread {
public:
Thread() : ptr_t1(new boost::thread(boost::bind(&Thread::run, this))) {}
~Thread() {}
void run()
{
while(true) {
cout << "I'm in run" << endl;
sleep(1);
}
}
private:
boost::scoped_ptr<boost::thread> ptr_t1;
};
void lancia() {
Thread t;
for(int i = 0; i < 10; i++) {
cout << "I'm in lancia" << endl;
sleep(1);
}
}
int main(int argc, char* argv[]) {
lancia();
while(true) {
cout << "The object may be destroyed" << endl;
sleep(1);
}
return 0;
}
Grazie