Re: [問題] 請問有關多執行緒
CWinThread* pThread = AfxBeginThread(MyThread,(LPVOID)this);
CWinThread* pThread2 = AfxBeginThread(MyThread2,(LPVOID)this);
CWinThread* pThread3 = AfxBeginThread(MyThread3,(LPVOID)this);
CWinThread* pThread4 = AfxBeginThread(MyThread4,(LPVOID)this);
HANDLE m_Thread1 = pThread->m_hThread;
HANDLE m_Thread2 = pThread2->m_hThread;
HANDLE m_Thread3 = pThread3->m_hThread;
HANDLE m_Thread4 = pThread4->m_hThread;
...
....
....
::WaitForSingleObject(m_Thread1,INFINITE);
::WaitForSingleObject(m_Thread2,INFINITE);
::WaitForSingleObject(m_Thread3,INFINITE);
::WaitForSingleObject(m_Thread4,INFINITE);
CloseHandle(m_Thread1);
CloseHandle(m_Thread2);
CloseHandle(m_Thread3);
CloseHandle(m_Thread4);
------------------------------------------------
UINT MyThread(LPVOID)
{
for(int i =0;i<25;i++)
function(i);
}
UINT MyThread2(LPVOID)
{
for(int i =25;i<50;i++)
function(i);
}
UINT MyThread3(LPVOID)
{
for(int i =51;i<75;i++)
function(i);
}
UINT MyThread4(LPVOID)
{
for(int i =75;i<100;i++)
function(i);
}
以上的是我的C++ code 因為每秒都會有一個input
都要跑過上面的code 一遍
想請問一下 好像常常會跑到一半就停下來不動了
是因為WaitForSingleObject( ,INFINITE); 的關係嗎?
因為網上WaitForSingleObject的範例看得不是很懂
怕一知半解搞錯了,想請問大家這樣寫對嗎?
還請幫忙我看一下 謝謝
※ 引述《jokingfish (ㄚ魚!!)》之銘言:
: 最近自學了多執行緒的寫法
: 程式設計上也還測試OK
: 但是還是想進一步加快速度
: 目前我有一個function(int i) i=0~99
: 我只會傻傻地將i的個數切成四分 0~24 25~49 50~74 75~99
: 然後開四個執行緒去跑
: 因為每一個function的執行時間快慢不一
: 可能有一個執行緒跑完25個 另外一個只跑了10個
: 跑完的那個還是要等沒跑完的 感覺這樣有點浪費.....
: 請問有沒有寫法讓時間均勻一點?
: 比如說讓執行緒去自動去抓還沒跑完的i
: 還請版友幫忙 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.112.106
推
10/30 13:32, , 1F
10/30 13:32, 1F
→
10/30 13:32, , 2F
10/30 13:32, 2F
→
10/30 13:33, , 3F
10/30 13:33, 3F
→
10/30 13:34, , 4F
10/30 13:34, 4F
→
10/30 13:35, , 5F
10/30 13:35, 5F
→
10/30 13:35, , 6F
10/30 13:35, 6F
→
10/30 13:37, , 7F
10/30 13:37, 7F
推
10/30 13:44, , 8F
10/30 13:44, 8F
→
10/30 13:44, , 9F
10/30 13:44, 9F
推
11/10 18:10, , 10F
11/10 18:10, 10F
→
11/10 18:12, , 11F
11/10 18:12, 11F
推
12/05 05:55, , 12F
12/05 05:55, 12F
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章