请教各位大神一个问题,关于push过后按钮不见但能点击的问题
1个回答
展开全部
我猜你的意思是想利用互斥锁在做同步,但你忽略了一个非常重要的问题,就是线程启动是需要时间的,在线程还没开始运行到你的Fun1Proc和Fun2Proc的时候,你的main主线程里其实是已经先拿到了这个锁,并且早已经把index减到0了,然后main直接退出了,你的线程可能还没开始执行
一个可行的做法是,(假如你必须要等待两个线程开始执行你的代码才允许主线程去等待互斥锁):在主线程里创建两个无信号的事件,主线程在WaitForMultiObject等待这两个对象bWaitAll=TRUE,然后,在你的Fun1Proc和Fun2Proc里去SetEvent将对应的事件设置为有信号,这样的意思就是只要有信号,就肯定保证线程已经运行起来了,避免main主线程一直抢到了互斥锁把index减到0了
一个可行的做法是,(假如你必须要等待两个线程开始执行你的代码才允许主线程去等待互斥锁):在主线程里创建两个无信号的事件,主线程在WaitForMultiObject等待这两个对象bWaitAll=TRUE,然后,在你的Fun1Proc和Fun2Proc里去SetEvent将对应的事件设置为有信号,这样的意思就是只要有信号,就肯定保证线程已经运行起来了,避免main主线程一直抢到了互斥锁把index减到0了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询