Господа! Как посылать сигналы исполняющемуся потоку (boost::thread)? Следующая программа никогда не завершается, отладчик показывает, что указатели this в функциях void operator()() и void Stop() разные, словом, библиотека пользуется копией рабочего объекта...
#include <iostream>
#include <boost/thread/thread.hpp>
using namespace std;
using namespace boost;
class worker
{
public:
worker(): _stop(false) {}
void operator()()
{
while (!_stop)
cout << ".";
}
void Stop() { _stop = true; }
private:
volatile bool _stop;
};
int main(int argc, char* argv[])
{
worker w;
thread t(w);
w.Stop();
t.join();
return 0;
}