发表于:2004-05-14 14:08:59
- yujianru
- (飞鸟)
- 等 级:
- 结帖率:
楼主发表于:2004-05-14 14:08:59
实现如下功能:
有两线程一为界面线程,另一为工作线程。
界面上有两按钮为开始,和停止。
按一下停止就阻塞工作线程,按一下开始就换醒工作线程。
- lianglp
- (lianglp)
- 等 级:
#1楼 得分:0回复于:2004-05-14 14:26:16
如果知道线程ID
HANDLE hThread = ::OpenThread(...) ;
::SuspendThread(hThread) ;//挂起线程
::ResumeThread(hThread) ;//唤醒线程
- ckp
- (surge)
- 等 级:
#2楼 得分:0回复于:2004-05-14 15:01:37
同意lianglp() ( )
精华推荐:作战理论入门[日]陆上自卫队修(带链接)
- yujianru
- (飞鸟)
- 等 级:
#3楼 得分:0回复于:2004-05-14 16:33:50
好象不起什么作用。。
SupendThread 后线程没有停止执行。
精华推荐:笑口常开 健康永驻(2009-3-10)
- dhbo
- (沉默的石头)
- 等 级:
#4楼 得分:0回复于:2004-06-07 09:25:13
可以的
精华推荐:联邦调查局档案(美)凯恩·博斯特尔(带链接)
- force_eagle
- (战鹰)
- 等 级:
#5楼 得分:0回复于:2004-06-07 11:11:30
SupendThread 不行???????
那就用事件控制吧!!!!!!!!!!!!!
精华推荐:发布一个C++网络开发工具包 - netkit测试版
- wwwsq
- (wwwsq)
- 等 级:
#6楼 得分:0回复于:2004-06-08 11:20:51
SuspendThread 应该没问题的,检查一下SuspendThread是否执行成功。
- nightsuns
- (nightsuns)
- 等 级:
#7楼 得分:0回复于:2004-06-09 13:17:34
有一个偏门
线程A有一个窗口循环,线程B向它sendmessage,
而线程A处理这个消息不返回,这样线程B就会被阻塞!
- LeLeGhost
- (禅师)
- 等 级:
#8楼 得分:0回复于:2004-06-09 14:54:53
用 CreateMutex 生成一个互斥量.
阻塞的地方用 WaitForSingleObject 等候信号量,用 ReleaseMutex 和来控制信号量.
具体可以到 MSDN 中查找 WaitForSingleObject 的用法
- madhappy
- (545454)
- 等 级:
#9楼 得分:0回复于:2004-06-09 23:50:03
HANDLE hThread = ::OpenThread(...) ;
::SuspendThread(hThread) ;//挂起线程
::ResumeThread(hThread) ;//唤醒线程
-------------------------------------
你在mfc中调用以上代码是不起作用的
这样启动线程:
CWinThread* Thread=AfxBeginThread(ThreadProc,NULL);
挂起线程:
TrainThread-> SuspendThread();
唤醒线程:
TrainThread-> ResumeThread();
另外这两个挂起唤醒线程函数返回一个DWORD的值,可以看到线程状况。
- LavaFlow
- (LavaFlow)
- 等 级:
#10楼 得分:0回复于:2004-06-10 00:51:55
OpenThread是2000后的函数,98下不起作用。如果2000下工作不正常的话,OpenThread的参数是不是传的有效句柄。
madhappy的方法是可以,俺也有个问题,如何停止一个从toolhelp枚举出来的thread呢,如果要求在98下也能工作的话?Jeffrey的书里没说,俺一直没想出办法来。