我正在尝试并行化一些代码,但我遇到了(可能是愚蠢的)问题。下面的示例代码返回“12”,尽管我期望“21”。
当我在此块中的任何位置调用它们时,omp_get_max_threads() 返回 8,omp_get_num_threads() 返回 1,并且 omp_get_thread_num() 返回 0。我想我可以得出结论,它只是由主线程按顺序执行。
#include <omp.h>
#include <iostream>
#include <Windows.h>
using namespace std;
int main() {
#pragma omp parallel sections num_threads(2)
{
#pragma omp section
{ Sleep(200);
cout << "1"; }
#pragma omp section
{ cout << "2"; }
}
}
我究竟做错了什么?如何强制并行处理这些部分?
对于上下文:我正在从两个 USB 3.0 摄像头流式传输数据,并且顺序调用每个摄像头的图像非常慢,以至于我正在丢失帧。我想基本上为每个相机留出一个线程来不断地要求它的图像。
这个问题有类似的标题,但没有帮助。我正在使用 Visual Studio 2010。