多核/多線程程式設計中肯定會用到同步互斥操作。除了互斥變量以為,就是臨界區。
臨界區是指在用一時刻隻允許一個線程執行的一段用{...},包圍的代碼段。
在OpenMP中臨界區聲明方法如下:
#pragma omp critical [(name)] //[]表示名字可選
{
//需要同一時刻隻能有一個線程通路的代碼
}
如下面的代碼:
執行結果:
可以看到,機器有8個核,啟動了8個線程。如果将代碼中的第13行注釋掉,執行結果中的Sum基本就是不确定的。
多核/多線程程式設計中肯定會用到同步互斥操作。除了互斥變量以為,就是臨界區。
臨界區是指在用一時刻隻允許一個線程執行的一段用{...},包圍的代碼段。
在OpenMP中臨界區聲明方法如下:
#pragma omp critical [(name)] //[]表示名字可選
{
//需要同一時刻隻能有一個線程通路的代碼
}
如下面的代碼:
執行結果:
可以看到,機器有8個核,啟動了8個線程。如果将代碼中的第13行注釋掉,執行結果中的Sum基本就是不确定的。