关于多线程使用有关问题,多谢大家
【求助】关于多线程使用问题,谢谢大家
线程定义如下
CSemaphore Data(2,2);
操作方法:
1.用线程的方式做了一个TCP/IP通信,但是在线程中,有一个这样的判断,比如电机在运动时候,检测是否停止使用了这样的一个代码
一直去检测,导致线程假死,TCP/IP不能接受到发来的命令,我能否把这句移动到另外一个线程中,这样才能避免这样的问题吗?或者还有什么解决办法呢?谢谢大家了
------解决方案--------------------
把
这个代码放到另外一个线程中,假设当前线程是A,另外一个线程B。
这里简单的使用全局变量来同步,你也可以使用事件来同步。
线程定义如下
CSemaphore Data(2,2);
操作方法:
1.用线程的方式做了一个TCP/IP通信,但是在线程中,有一个这样的判断,比如电机在运动时候,检测是否停止使用了这样的一个代码
while(!event )
{
if(!TS_CheckEvent(&event))
return ;
}
一直去检测,导致线程假死,TCP/IP不能接受到发来的命令,我能否把这句移动到另外一个线程中,这样才能避免这样的问题吗?或者还有什么解决办法呢?谢谢大家了
------解决方案--------------------
把
while(!event )
{
if(!TS_CheckEvent(&event))
return ;
}
这个代码放到另外一个线程中,假设当前线程是A,另外一个线程B。
bool bCheckEvent = false;
A()
{
if( bCheckEvent )
{
//TODO
}
}
B()
{
while(1)
{
bCheckEvent = TS_CheckEvent();
Sleep(100);
}
}
这里简单的使用全局变量来同步,你也可以使用事件来同步。