让我们考虑一些代码,以便在具有多个线程的for循环中安全地递增变量。
为此,您必须在增加变量时使用某种锁定机制。当我在寻找解决方案时,我想出了以下解决方案。
我的问题是:
mutex而不是#pragma omp critical?#include <iostream>
#include <mutex>
int main(int argc, char** argv)
{
int someVar = 0;
std::mutex someVar_mutex;
#pragma omp parallel for
for (int i = 0; i < 1000; i++)
{
std::lock_guard<std::mutex> lock(someVar_mutex);
++someVar;
}
std::cout << someVar << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
#include <iostream>
int main(int argc, char** argv)
{
int someVar = 0;
#pragma omp parallel for
for (int i = 0; i < 1000; …Run Code Online (Sandbox Code Playgroud)