第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么傳進(jìn)去的變量算得到的結(jié)果被賦給其他變量了

為什么傳進(jìn)去的變量算得到的結(jié)果被賦給其他變量了

Helenr 2023-03-03 22:18:53
問題描述:有80個(gè)計(jì)算狀態(tài)(popsize = 80),現(xiàn)在計(jì)劃用10核計(jì)算(建立10個(gè)線程nThreadCount = 10),由于每個(gè)狀態(tài)的計(jì)算時(shí)間不同(不可預(yù)測,大概在15分鐘以內(nèi)),為了節(jié)省計(jì)算時(shí)間,計(jì)劃一個(gè)線程的計(jì)算狀態(tài)完成后,緊跟著將緊跟著的下一個(gè)計(jì)算狀態(tài)調(diào)入計(jì)算(不關(guān)閉線程),但是計(jì)算結(jié)果發(fā)現(xiàn):傳進(jìn)評(píng)估函數(shù)(test_problem函數(shù))的計(jì)算結(jié)果與變量不對(duì)應(yīng),即傳進(jìn)去的變量算得到的結(jié)果被賦給其他變量了。郁悶!求高手幫忙!//線程建立函數(shù)void create_proc(population *pop){int i;HANDLE* threads = new HANDLE[nThreadCount]; // 線程句柄,nThreadCount = 10thread_pos = 0;hMutex = CreateMutex(NULL,FALSE,NULL); // 建立互斥對(duì)象for (i = 0; i < nThreadCount; i++){threads[i] = CreateThread( NULL, 0, TaskThreadProc, pop, 0, NULL); // 創(chuàng)建線程thread_pop_pos[i] = 0;SetThreadAffinityMask(threads[i], 1<<i); //分配核計(jì)算if (threads[i] == NULL)  {  printf("\n thread %d have not been created sucessfully, hence exiting", i);system("pause");exit(1);  }  SuspendThread(threads[i]);}for(i = 0; i <nThreadCount; i++){ResumeThread(threads[i]);Sleep(1000);}WaitForMultipleObjects(nThreadCount, threads, TRUE, INFINITE); // 等待線程運(yùn)行結(jié)束for (i = 0; i < nThreadCount; i++)CloseHandle(threads[i]); // 銷毀線程delete [] threads;}// 線程函數(shù)DWORD WINAPI TaskThreadProc( LPVOID lpParameter ){population *pop = (population *) lpParameter; //pop 包括所有的計(jì)算狀態(tài)evaluate_pop (pop);return 0;}// 這個(gè)函數(shù)要評(píng)估所有的80個(gè)狀態(tài)void evaluate_pop (population *pop){int ind_count; //每個(gè)線程正在評(píng)估的個(gè)體do{ ind_count = thread_pos; // 將全局賦給局部變量evaluate_ind (&(pop->ind[ind_count])); // 調(diào)用單個(gè)狀態(tài)評(píng)估函數(shù)}while(thread_pos < popsize);return;}void evaluate_ind (individual *ind){int j;WaitForSingleObject(hMutex,INFINITE);thread_pos++; // 全局變量,當(dāng)前共評(píng)估到那個(gè)狀態(tài)ReleaseMutex(hMutex);// ind->xreal 變量共10個(gè)DOUBLE型數(shù)據(jù),ind->obj要得到的變量值,共2個(gè)// test_problem里面調(diào)用了一個(gè)DLLtest_problem (ind->xreal, ind->obj);  return;}高手幫忙解答,感謝不盡,在線等,有疑問請(qǐng)回復(fù)
查看完整描述

2 回答

?
qq_遁去的一_1

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊

自己安排線程太累了。
用OMP吧。
#pragma omp parallel for
超級(jí)簡單。VS2005以后就有了。
不學(xué)就落伍啦。

查看完整回答
反對(duì) 回復(fù) 2023-03-06
?
翻翻過去那場雪

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊

malloc一份新的的參數(shù)pop參數(shù)傳到TaskThreadProc這個(gè)里面

查看完整回答
反對(duì) 回復(fù) 2023-03-06
  • 2 回答
  • 0 關(guān)注
  • 122 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)