天天看點

OpenMP 線程同步之臨界區

多核/多線程程式設計中肯定會用到同步互斥操作。除了互斥變量以為,就是臨界區。

臨界區是指在用一時刻隻允許一個線程執行的一段用{...},包圍的代碼段。

在OpenMP中臨界區聲明方法如下:

#pragma omp critical [(name)] //[]表示名字可選

{

    //需要同一時刻隻能有一個線程通路的代碼

}

如下面的代碼:

執行結果:

OpenMP 線程同步之臨界區

可以看到,機器有8個核,啟動了8個線程。如果将代碼中的第13行注釋掉,執行結果中的Sum基本就是不确定的。

繼續閱讀