读书人

关于2个线程同步的有关问题一个调用

发布时间: 2013-11-02 19:41:10 作者: rapoo

关于2个线程同步的问题,一个调用另一个
我有2个线程在工作,一个线程调用SendAndReceive()函数,这个函数会调用第二个线程,
我希望第二个线程执行完成之前让第一个线程阻塞,请问下如何实现,关键是第二个线程完成了如何让第一个线程知道呢,谢谢


bool MeetingControlDlg::SendAndReceive()
{
m_SerialPort.WriteToPort(pcmd->command, pcmd->len);
return true;
}


void CSerialPort::WriteToPort(unsigned char* buf,int len)
{
assert(m_hComm != 0);

memset(m_szWriteBuffer, 0, sizeof(m_szWriteBuffer));
for(int i=0;i<len;i++)
{
m_szWriteBuffer[i]=buf[i];
}
m_WriteLen = len;//保存发送字节数

// set event for write
SetEvent(m_hWriteEvent);
}


[解决办法]
用临界区锁住?
[解决办法]
整一个事件对象,让SendAndReceive线程WaitForSingleObject该事件对象,当第二个线程执行完工作时触发该事件对象,这样SendAndReceive线程Wait成功,继续工作
[解决办法]
同步嘛,临界区,EVENT都可以
[解决办法]
临界区,事件,信号量,互斥都可以。
看你描述的,为啥不直接一个线程干完?

读书人网 >VC/MFC

热点推荐