※ 引述《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)