首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么暂停(挂起)和恢复一个线程呢

2013-03-01 
怎样暂停(挂起)和恢复一个线程呢?怎样在一个线程中暂停(挂起)和恢复另一个线程呢?《WINDOWS核心编程》中说可

怎样暂停(挂起)和恢复一个线程呢?
怎样在一个线程中暂停(挂起)和恢复另一个线程呢?
《WINDOWS核心编程》中说可以使用
DWORD SuspendThread ( HANDLE hThread );   //挂起线程
DWORD ResumeThread ( HANDLE hThread );   //恢复线程
是不是使用这两个函数就行?

比如我在int main()中创建了两个线程

handle[0]=(HANDLE)_beginthreadex(NULL,0,ThreadFunc1,NULL,0,NULL);
handle[1]=(HANDLE)_beginthreadex(NULL,0,ThreadFunc2,NULL,0,NULL);

线程函数ThreadFunc1执行一个任务操作(比如循环写入0至9),而ThreadFunc2不断检测某个条件的是否满足,如果满足,则暂停线程1的任务操作,是不是这样写就行:
ThreadFunc2()
{
  if(条件满足)
    {
        SuspendThread(handle[0]);
        //报警声;
    }
} 多线程?挂起?恢复
[解决办法]
是不是?自己试试不就知道了吗 总共就2个API 有问的功夫早就试出来了
[解决办法]
对啊

你把它加入代码里面

如果参数没问题的画

逻辑上是可以通过的
[解决办法]
void CDxcTestDmDlg::OnButton1() 
{
    //线程1
    handle[0]=(HANDLE)_beginthreadex(NULL,0,ThreadFunc1,NULL,0,NULL);
    //线程2
    handle[1]=(HANDLE)_beginthreadex(NULL,0,ThreadFunc2,NULL,0,NULL);
    WaitForMultipleObjects(THREAD_NUM,handle,TRUE,INFINITE);
}
这里的Wait函数在死等,界面线程已经停止响应了。你点不了Button2正常。

热点排行