gpt4 book ai didi

c++ - 是否可以全局声明一个boost线程?

转载 作者:行者123 更新时间:2023-11-30 05:19:12 25 4
gpt4 key购买 nike

你好,我想全局声明一个boost线程,稍后再初始化。所以:

#include <iostream>

using namespace std;
boost::thread t;

void some_func()
{
printf("hello world\n");
}

int main()
{
t(some_func);

return 0;
}

它正在返回有关初始化的错误。

error: no match for call to ‘(boost::thread) (void (&)())

那么我该如何初始化它呢?

编辑::我想这样做的原因是因为我想根据条件生成线程。所以在伪代码中:

    if (cond A satisfied)
spawn thread_A

if (cond B satisfied)
spawn thread_B


// Do some stuff

if (cond B satisfied)
thread_B.join()

if (cond A satisfied)
thread_A.join()

如果线程没有全局范围,那么我不能这样做

最佳答案

t 的默认构造函数将对象初始化为没有事件线程。为了解决这个问题,您必须执行交换。

boost::thread(&some_func).swap(t);

或来自右值的赋值(在 C++11 中):

t = boost::thread(&some_func);

关于c++ - 是否可以全局声明一个boost线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41272895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com