Возврат значений из специфичного для потока кода с использованием повышающих потоков - PullRequest
0 голосов
/ 15 марта 2011

Я использую потоки библиотеки буста C ++, подобные этому

MyThread alarm();
boost::thread thrd(alarm);
if (thrd.timed_join(boost::posix_time::seconds(timeout)))
{
    cout << alarm.modified_var << endl;
}
else
{
    cout << alarm.modified_var << endl;
}

updated_var изменен внутри класса MyThread, но когда я печатаю его позже после точки синхронизации, я получаю единичное значение Modified_var.Что я делаю не так?

1 Ответ

6 голосов
/ 15 марта 2011

Это потому, что alarm -объект копируется при передаче в конструктор thread . Решение состоит в том, чтобы обернуть это в boost::ref:

boost::thread thrd(boost::ref(alarm));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...