5 个解决方案
#1
应该是进程中的线程吧。它只会阻塞这个线程,进程中的其它线程一样运行。
这个线程好像没法醒了。为什么要用sleep(INFINITY)呢, 用事件这些同步方式吧
这个线程好像没法醒了。为什么要用sleep(INFINITY)呢, 用事件这些同步方式吧
#2
up
#3
DWORD WaitForSingleObject(
HANDLE hHandle, // handle to object
DWORD dwMilliseconds // time-out interval
);
用这个吧
HANDLE hHandle, // handle to object
DWORD dwMilliseconds // time-out interval
);
用这个吧
#4
难道真的没办法唤醒了吗?我是想在一个现有的已经完成的程序基础上插入调试的代码,当程序运行到某个程序某个地方,某些条件满足的时候让程序的运行暂停,把运行中的几个跟踪的变量写到与其通讯的调试进程的共享内存中,调试进程再把得到的数据显示在屏幕上,所以就把主线程给睡眠了。
目前我是把主线程给阻塞了,不断的读取共享内存中的中断判断标志,直到中断被清除,但这样做CPU耗时太大了,所以想问问还有没有其他的办法。
目前我是把主线程给阻塞了,不断的读取共享内存中的中断判断标志,直到中断被清除,但这样做CPU耗时太大了,所以想问问还有没有其他的办法。
#5
这时一个同步问题,不要用Sleep,用event对象来暂停线程。唤醒的时候用SetEvent。
线程主动睡眠:
CEvent event(FALSE,FALSE,"EventName");
event.Lock();
另外一个进程这样唤醒线程:
CEvent event(FALSE,FALSE,"EventName");
event.SetEvent();
线程主动睡眠:
CEvent event(FALSE,FALSE,"EventName");
event.Lock();
另外一个进程这样唤醒线程:
CEvent event(FALSE,FALSE,"EventName");
event.SetEvent();
#1
应该是进程中的线程吧。它只会阻塞这个线程,进程中的其它线程一样运行。
这个线程好像没法醒了。为什么要用sleep(INFINITY)呢, 用事件这些同步方式吧
这个线程好像没法醒了。为什么要用sleep(INFINITY)呢, 用事件这些同步方式吧
#2
up
#3
DWORD WaitForSingleObject(
HANDLE hHandle, // handle to object
DWORD dwMilliseconds // time-out interval
);
用这个吧
HANDLE hHandle, // handle to object
DWORD dwMilliseconds // time-out interval
);
用这个吧
#4
难道真的没办法唤醒了吗?我是想在一个现有的已经完成的程序基础上插入调试的代码,当程序运行到某个程序某个地方,某些条件满足的时候让程序的运行暂停,把运行中的几个跟踪的变量写到与其通讯的调试进程的共享内存中,调试进程再把得到的数据显示在屏幕上,所以就把主线程给睡眠了。
目前我是把主线程给阻塞了,不断的读取共享内存中的中断判断标志,直到中断被清除,但这样做CPU耗时太大了,所以想问问还有没有其他的办法。
目前我是把主线程给阻塞了,不断的读取共享内存中的中断判断标志,直到中断被清除,但这样做CPU耗时太大了,所以想问问还有没有其他的办法。
#5
这时一个同步问题,不要用Sleep,用event对象来暂停线程。唤醒的时候用SetEvent。
线程主动睡眠:
CEvent event(FALSE,FALSE,"EventName");
event.Lock();
另外一个进程这样唤醒线程:
CEvent event(FALSE,FALSE,"EventName");
event.SetEvent();
线程主动睡眠:
CEvent event(FALSE,FALSE,"EventName");
event.Lock();
另外一个进程这样唤醒线程:
CEvent event(FALSE,FALSE,"EventName");
event.SetEvent();