|
- 多线程操作
- //开辟30个线程
- for(int i=0;i < 30;i++)
- m_hThrds[i] = StartThread(StartUpdate,lpParam);//保存线程句柄,以便结束的时候,关闭句柄
-
- //等待30个线程全部执行完毕
- WaitForMultipleObjects(30,m_hThrds,TRUE,INFINITE);
- //关闭所有线程句柄
- for(int i=0;i<30;i++)
- CloseHandle(m_hThrds[i]);
-
- //线程函数
- DWORD WINAPI StartUpdate(LPVOID pParam)
- {
- //while循环,退出的唯一条件是:链表m_List中的值为空
- while(TRUE)
- {
- //加锁
- Lock();
- if(m_List.IsEmpty())
- {
- //解锁
- Unlock();
- //链表为空,则退出循环
- break;
- }else{
- //从链表m_List中取出一个值,用于处理
- XXX = m_List.RemoveHead();
- //解锁
- Unlock();
- }
- //根据从链表m_List中获取到底值,xxx进行某些IO操作
- ....
- Sleep(100);
- }
- }
复制代码 以上是,多线程操作下的代码结构,运行的时候,CPU占用率达到了80%左右。不知道是否哪里有逻辑错误?希望大神帮忙指出!
|
|