请教大神线程的问题,两个子线程中分别有一个网络接受函数,为什么不能执行,跪谢

2025-02-26 16:16:59
推荐回答(1个)
回答1:

我猜你的意思是想利用互斥锁在做同步,但你忽略了一个非常重要的问题,就是线程启动是需要时间的,在线程还没开始运行到你的Fun1Proc和Fun2Proc的时候,你的main主线程里其实是已经先拿到了这个锁,并且早已经把index减到0了,然后main直接退出了,你的线程可能还没开始执行

一个可行的做法是,(假如你必须要等待两个线程开始执行你的代码才允许主线程去等待互斥锁):在主线程里创建两个无信号的事件,主线程在WaitForMultiObject等待这两个对象bWaitAll=TRUE,然后,在你的Fun1Proc和Fun2Proc里去SetEvent将对应的事件设置为有信号,这样的意思就是只要有信号,就肯定保证线程已经运行起来了,避免main主线程一直抢到了互斥锁把index减到0了

由于并不清楚你的具体作用,上面的方法也只供参考;多线程同步必须在逻辑上保证绝对的同步,这个又跟你的一些实现有关系,所以只能给个折中的办法了