Сигнал рабочему потоку
От: s_anatoli Украина http://koresha.org/sakhnik
Дата: 23.09.04 09:08
Оценка:
Господа! Как посылать сигналы исполняющемуся потоку (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;
}
http://www.koresha.org/sakhnik/sakhnik.gif
Жизнь — это чудо! Только вперёд: sakhnik@jabber.kiev.ua
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.