首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++ 11中线程的延迟启动

C++ 11中线程的延迟启动
EN

Stack Overflow用户
提问于 2014-08-27 18:29:18
回答 6查看 32.2K关注 0票数 50

我遇到了C++11线程,遇到了一个问题。

我希望将线程变量声明为全局变量,并在稍后启动它。

然而,我所见过的所有示例似乎都是立即启动线程的,例如

代码语言:javascript
复制
thread t(doSomething);

我想要的是

代码语言:javascript
复制
thread t;

并稍后启动该线程。

我试过的是

代码语言:javascript
复制
if(!isThreadRunning)
{
    thread t(readTable);
}

但现在t是块作用域。所以我想声明t,然后稍后启动线程,这样t就可以被其他函数访问了。

谢谢你的帮助。

EN

Stack Overflow用户

发布于 2014-08-27 19:07:32

没有创建线程“挂起”的“标准”,我想这就是您想要使用C++线程库做的事情。因为并不是每个有线程的平台都支持它,所以C++应用编程接口中也没有它。

  1. 你可能想创建一个包含所有必需数据的类,而不是实际运行你的线程函数。这与创建线程不同,但可能是您想要的。
  2. 你可能需要你的线程的线程id。这意味着您确实需要启动线程函数。但是,它可以从等待条件变量开始。然后,当您希望该条件变量继续运行时,您可以向该条件变量发送信号或进行广播。当然,你可以让函数在它恢复后检查一个条件,以防你可能已经决定关闭它并不运行它(在这种情况下,它只会返回instantly).
  3. You可能需要一个没有函数的std::thread对象)。您可以这样做,并在以后将其附加到一个函数,以便在新线程中run该函数。
票数 2
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25524775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档