這三篇文章已經講的很好。
關鍵語法:
#inlcude #pragma omp parallel for#pragma omp for reduction(+: 變數)
#pragma omp critical//
鎖#pragma omp parallel for private(x,y)//
每個執行緒都獨立拷貝x, y變數,互不干擾,如果不設預設是共享變數
#pragma omp parallel for schedule(static/dynamic/guided, k)//
總工作量劃分成n/k塊,再多執行緒排程
#pragma omp parallel sections
#pragma omp parallel
.......
}#pragma omp barrier/nowait //
強制設定珊障/無需等待,如果後續函式對前面的多執行緒沒有依賴,即可使用nowait
#pragma omp parallel for firstprivate(變數)/lastprivate(變數) //
為每個多執行緒賦初值/出多執行緒回到主線程時賦值供主線程使用
還有就是openmp的api:
int omp_get_num_threads(); //獲取當前使用的執行緒個數
int omp_get_num_threads(2/3/...)//
設定要使用的執行緒個數
nt omp_get_thread_num(void);//
返回當前執行緒號
int omp_get_num_procs(void);//
返回可用的處理核個數
ubuntu下,無需加標頭檔案,只需在編譯的時候增添-fopenmp即可。
例如:emacs操作命令如下
emacs omp.c#include
intmain()
return0;
}ctrl+x s
alt+x compile
gcc -fopenmp -o omp omp.c
alt+shift+1 ./omp
自用 linux下多執行緒
3 簡單的多執行緒示例 乙個簡單的linux多執行緒示例如下 include include include include void thread function void arg char message hello world int main printf waiting for thre...
linux下多執行緒程式設計
先看執行的結果 1 主函式正在建立執行緒,2執行緒1被建立 3 thread1 i m thread 1th 4執行緒2被建立 5 thread2 i m thread 2nd 6 thread2 number 0 7執行緒3被建立 8主函式正在等待執行緒結束.9 thread1 number 0 ...
多執行緒開發簡易工具 OpenMP使用
最近有朋友問我tld感覺執行還是不夠快,問我如何提公升效率,我說用多執行緒,可是感覺很多程式設計人員認為這是個禁區,不敢涉足。但其實大家不用如此害怕,並行程式設計固然涉及很多系統執行機制的問題,搞不好可能會使程式崩潰,但openmp大大降低了並行開發的難度和複雜度。具體使用也非常簡單,不用安裝任何輔...