C++多线程编程如何让一个循环的子线程暂停和恢复
我有这样的一个程序,这个程序的子线程是重复播放背景音乐的,那么我这个子线程肯定要是循环执行的。现在问题来了,我鼠标点击某个位置的时候,我要用SuspendThread()...
我有这样的一个程序,这个程序的子线程是重复播放背景音乐的,那么我这个子线程肯定要是循环执行的。现在问题来了,我鼠标点击某个位置的时候,我要用SuspendThread()这个函数来挂起这个子线程,停止音乐的播放,但是我挂起这个线程无法停止这个循环啊,他就在一直循环,这样我也没法再点击另一个区域恢复这个循环。请问这个问题该怎么解决呢?
展开
2个回答
展开全部
暂停线程必须想一个办法在能控制线程在能暂停的地方暂停,暂停点不能有任何数据已经上锁,上面说的那种while循环中也不能被暂停,还有一种就是当有大量内存被申请且还没有释放之前最好也不要被暂停。我建议大家用手动模式的信号量来实现。像这样申请一个信号量:
hEvent=::CreateEvent(NULL,TURE,TURE,lpName);//第二个参数是TURE,设定为手动模式,防止::WaitForSingleObject改变信号量的状态。
hEvent=::CreateEvent(NULL,TURE,TURE,lpName);//第二个参数是TURE,设定为手动模式,防止::WaitForSingleObject改变信号量的状态。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询