看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《scott20144 (DaYo)》之銘言: : 我想請問一下 : 實在試了很久,只好上來問.. : int test=0; : #pragma omp parallel num_threads(2) //這裡是說我準備好了兩個執行緒 : { : while(test <10){ //這裡分給第一個 : printf("%d test:%d\n",omp_get_thread_num(),test); : test++; : } : } 如果是我會這樣寫(手動拆兩個) int test1=0; int test2=1; #pragma omp parallel sections num_threads(2) //準備好了兩個執行緒 { #pragma omp section {//這裡分給第一個Thread while(test1 <10){ printf("%d test:%d\n",omp_get_thread_num(),test1); test1+=2; }//end while }end first thread #pragma omp section {//這裡分給第"二"個Thread while(test2 <10){ printf("%d test:%d\n",omp_get_thread_num(),test2); #pragma omp atomic test2+=2; }//end while }end second thread } ----------------------------- 當然還可以寫成for的版本 #pragma omp parallel num_threads(2) //準備好了兩個執行緒 { #pragma omp for //for 平行開始 for(int test=0;test <10test++){ printf("%d test:%d\n",omp_get_thread_num(),test); }//end while } -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.63.132 ※ 編輯: wope 來自: 140.112.63.132 (12/23 07:47) ※ 編輯: wope 來自: 140.112.63.132 (12/23 07:49)