Аргументы функции Boost Thread передаются как ссылки (Boost :: Ref (), кажется, не работает ...) - PullRequest
0 голосов
/ 20 января 2020

У меня есть следующая простая функция:

void hda(unsigned long &command)
{
    command++;
    PlugIn::gResultOut << "inside thread: " << command << std::endl;

return;
}

, и я создаю boost :: thread как

void SU_HThread(unsigned long &command)
{
    command++,
    PlugIn::gResultOut << "before thread: " << command << std::endl;

    boost::thread Hthread = boost::thread(boost::bind(boost::move(hda), boost::ref(command)));

return;
}

Но когда я вызываю эту функцию, значение команды, которое внутри потока не зарегистрировано ...

number com = 0

SU_HThread(com) 
sleep(1) // sleep 1 second
result("after thread: "+com+" \n")

Вывод:

before thread: 1
inside thread: 2
after thread: 1 

Обычный ответ с boost :: ref (command) здесь не работает .. .. Любые идеи? Желательно без использования обещаний, так как мне нужно наблюдать за изменением значения команды в реальном времени.

спасибо!

...