【发布时间】:2014-03-18 22:39:08
【问题描述】:
我尝试在 C++ 程序中设置超时:
...
void ActThreadRun(TimeOut *tRun)
{
tRun->startRun();
}
...
void otherFunction()
{
TimeOut *tRun = new TimeOut();
std::thread t1 (ActThreadRun, tRun);
t1.join();
while(tRun->isTimeoutRUN())
{
manageCycles();
}
}
...
3 秒后超时,tRun->isTimeoutRUN() 改变其状态。
但是如果我“join”线程,我会阻塞程序,所以它会等待 3 秒再继续,所以它永远不会进入我的 while 循环......
但如果我不“join”线程,线程永远不会超时,tRun->isTimeoutRUN() 永远不会改变,所以它会无限运行。
我不擅长线程,所以我请求你的帮助,因为我不懂 C++ 中的教程。
【问题讨论】:
-
尝试在 while 循环中添加内存屏障。编译器可能会将值放入寄存器
标签: c++ multithreading