gpt4 book ai didi

c++ - 如何从调用的函数获取返回值,该函数在 TBB 的另一个线程中执行?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:23 26 4
gpt4 key购买 nike

在代码中:

    #include <tbb/tbb.h>

int GetSomething()
{
int something;
// do something
return something;
}

// ...
tbb::tbb_thread(GetSomething, NULL);
// ...

此处 GetSomething() 在另一个线程中通过其指针被调用。但是我们可以从 GetSomething() 获取返回值吗?怎么办?

最佳答案

如果你绑定(bind)了 C++03 和 tbb,你必须使用 Outputarguments,这意味着你必须重写你的函数。

例如:

void GetSomething(int* out_ptr);

int var = 23;

tbb::tbb:thread(GetSomething, &var); // pay attention that this doesn't run of scope

或者使用 boost::ref 你可以这样做:

void GetSomething(int& out);

int var = 23;
tbb::tbb_thread(GetSomething, boost::ref(var)); // pay attention here, too

如果您可以使用 C++11,则通过使用 futures 可以简化任务:

例如:

std::future<int> fut = std::async(std::launch::async, GetSomething);

....

// later

int result = fut.get();

在这里你不需要重写任何东西。

关于c++ - 如何从调用的函数获取返回值,该函数在 TBB 的另一个线程中执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12871836/

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