我创建了一个在 while(1) 中运行并返回一个整数的函数,我想在后台打开这个函数并恢复它们的返回。
谁能帮帮我!
这是我的功能:
int my_fct() {
while(1) {
int result = 1;
return result;
}
}
如何std::async
在不同的线程中计算它:
int main()
{
auto r = std::async(std::launch::async, my_fct);
int result = r.get();
}
需要启用 C++11。
如果您无法访问 C++11 并且您无法像在 Windows 上那样访问 pthreads,那么您可以使用 OpenMP。类 Unix 系统和 Windows 上的大多数 C++ 编译器都支持 OpenMP。它比 pthread 更容易使用。例如,您的问题可以编码为:
#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 支持进行编译。它适用/openmp
于 MS Visual C++ 编译器和-fopenmp
GNU C++ 编译器。您可以在其他编译器的使用手册中找到正确的标志。