我有視覺工作室,其中OPENMP 3.0未支載(這意味着它不具有任務構建體)的問題是一個線程具有產生多組數據,而另一個線程的陣列的必須爲每個完成的集合處理這些數據...有沒有使用任務的任何解決方法?如能得到任何幫助,我將不勝感激。驗證碼:執行與相關的數據任務級並行
int id = omp_get_thread_num();
if (id == 0)
{
for (int k = 0; k < n; k++)
{
int f = k * r * c;
for (int i = 0; i < r; i++)
{
int rw = i * c;
for (int j = 0; j < c; j++)
{
p[f + rw + j] = rand() % 65535;
}
}
_sleep(500);
}
}
if (id == 1)
{
_sleep(200);
for (int k = 0; k < n; k++)
{
int f = k * r* c;
cout << "\n" << k;
for (int i = 0; i < r; i++)
{
int rw = i * c;
for (int j = 0; j < c; j++)
{
p[f + rw + j] *= sin(2 * 3.14 * (10.0/100.0) * k);
}
}
Mat img(r, c, CV_16UC1, p);
namedWindow("output", CV_WINDOW_AUTOSIZE);
imshow("output", img);
waitKey();
}
}
}
system("pause");
這個程序的工作,但我不知道是否是並行或串行跑步或做任何冗餘時...
您可以打印線程ID並檢查是否有不同的ID。 – nwp
有一個沉重的依賴btw。線程0,其中容器中填充了隨機數和線程1,其中使用這些隨機數進行計算。你如何確保隨機數能夠及時獲得,特別是如果第一個線程較慢或被調度程序暫停? – Christophe