我创建了一个在while(1)中运行并返回一个整数的函数,我想在后台转换这个函数并恢复它们的返回。
谁能帮助我!
这是我的功能:
int my_fct() {
while(1) {
int result = 1;
return result;
}
}
答案 0 :(得分:2)
std::async
如何在另一个线程中计算它:
int main()
{
auto r = std::async(std::launch::async, my_fct);
int result = r.get();
}
需要启用C ++ 11。
答案 1 :(得分:0)
如果您无权访问C ++ 11,并且因为您无法像在Windows上那样访问pthread,那么您可以使用OpenMP。类Unix系统和Windows上的大多数C ++编译器都支持OpenMP。它比pthreads更容易使用。例如,您的问题可以编码如下:
#include <omp.h>
int my_fct() {
while(1) {
int result = 1;
return result;
}
}
int main()
{
#pragma omp sections
{
#pragma omp section
{
my_fct();
}
#pragma omp section
{
//some other code in parallel to my_fct
}
}
}
这是一个选项,看看OpenMP教程,你也可以找到其他一些解决方案。
正如评论中所建议的那样,您需要包含适当的编译器标志才能使用OpenMP支持进行编译。对于MS Visual C ++编译器,它是/openmp
,对于GNU C ++编译器,它是-fopenmp
。您可以在其使用手册中找到其他编译器的正确标记。