作者jokingfish (ㄚ鱼!!)
看板Programming
标题Re: [问题] 请问有关多执行绪
时间Fri Oct 28 15:46:45 2011
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
1F:推 cgcheng:你这样好像是A跑完才跑B,之後再跑C,最後D 59.115.20.84 10/30 13:32
2F:→ cgcheng:依序的跑这样,不会快 59.115.20.84 10/30 13:32
3F:→ cgcheng:你可以在function(i)把i值印出来看 59.115.20.84 10/30 13:33
4F:→ cgcheng:看每次跑是不是都照顺序在跑 59.115.20.84 10/30 13:34
6F:→ cgcheng:改用我上面贴的这个看会不会好点 59.115.20.84 10/30 13:35
7F:→ cgcheng:m$的东西我也不太会,仅供参考 59.115.20.84 10/30 13:37
8F:推 cgcheng:好像我的认知是错的,sorry 59.115.20.84 10/30 13:44
9F:→ cgcheng:请忽略 59.115.20.84 10/30 13:44
10F:推 lingpxs:你这样写没错 会等待全部完成後才离开 140.116.86.45 11/10 18:10
11F:→ lingpxs:但重点要注意function内有没有共用变数 140.116.86.45 11/10 18:12
12F:推 sorryChen:如果用openMP 应该会更简洁 68.123.226.150 12/05 05:55