进程睡眠的问题

时间:2021-01-09 14:54:51
如果一个进程调用了Sleep(INFINITY);以后,怎样再唤醒这个进程呢?

5 个解决方案

#1


应该是进程中的线程吧。它只会阻塞这个线程,进程中的其它线程一样运行。

这个线程好像没法醒了。为什么要用sleep(INFINITY)呢, 用事件这些同步方式吧

#2


up

#3


DWORD WaitForSingleObject(
  HANDLE hHandle,        // handle to object
  DWORD dwMilliseconds   // time-out interval
);
用这个吧

#4


难道真的没办法唤醒了吗?我是想在一个现有的已经完成的程序基础上插入调试的代码,当程序运行到某个程序某个地方,某些条件满足的时候让程序的运行暂停,把运行中的几个跟踪的变量写到与其通讯的调试进程的共享内存中,调试进程再把得到的数据显示在屏幕上,所以就把主线程给睡眠了。
目前我是把主线程给阻塞了,不断的读取共享内存中的中断判断标志,直到中断被清除,但这样做CPU耗时太大了,所以想问问还有没有其他的办法。

#5


这时一个同步问题,不要用Sleep,用event对象来暂停线程。唤醒的时候用SetEvent。

线程主动睡眠:

CEvent event(FALSE,FALSE,"EventName");
event.Lock();

另外一个进程这样唤醒线程:
CEvent event(FALSE,FALSE,"EventName");
event.SetEvent();

#1


应该是进程中的线程吧。它只会阻塞这个线程,进程中的其它线程一样运行。

这个线程好像没法醒了。为什么要用sleep(INFINITY)呢, 用事件这些同步方式吧

#2


up

#3


DWORD WaitForSingleObject(
  HANDLE hHandle,        // handle to object
  DWORD dwMilliseconds   // time-out interval
);
用这个吧

#4


难道真的没办法唤醒了吗?我是想在一个现有的已经完成的程序基础上插入调试的代码,当程序运行到某个程序某个地方,某些条件满足的时候让程序的运行暂停,把运行中的几个跟踪的变量写到与其通讯的调试进程的共享内存中,调试进程再把得到的数据显示在屏幕上,所以就把主线程给睡眠了。
目前我是把主线程给阻塞了,不断的读取共享内存中的中断判断标志,直到中断被清除,但这样做CPU耗时太大了,所以想问问还有没有其他的办法。

#5


这时一个同步问题,不要用Sleep,用event对象来暂停线程。唤醒的时候用SetEvent。

线程主动睡眠:

CEvent event(FALSE,FALSE,"EventName");
event.Lock();

另外一个进程这样唤醒线程:
CEvent event(FALSE,FALSE,"EventName");
event.SetEvent();