1 多线程之间最需要注意的两点问题:同步or异步
1)同步注意共同数据的读写问题:
注意避免两个线程一起写,或者是边读边写,协调好读和写顺序和时间。
2)异步注意不同线程之间流程问题:
要具有保证线程按顺序执行的机制
解决方法:注意预估计(有条件可以直接测试一下不同线程的运行速度)
根据运行速度,设定事件或者消息机制
事件:bool m_hCpatureNew;
m_bCaptureNew = true;
Bool setevent(m_hCpatureNew)
if( pThis->m_bCaptureNew)
{
// 操作
pThis->m_bCaptureNew = false;
}
消息1:HANDLE m_hCpatureNew
m_hCpatureNew = CreateEvent( NULL, FALSE,FALSE, NULL);
//参数:安全属性,重置方式,初始状态,对象名
if( WaitForSingleObject(pThis->m_hCpatureNew, INFINITE )
== WAIT_OBJECT_0) // WAIT_TIMEOUT
// INFINITE是等待时间
消息2:HANDLE m_hCpatureNew
m_hCpatureNew = CreateSemaphore( NULL, 0, 100, NULL);
//参数:安全属性,初始计数,最大计数,对象名
ReleaseSemaphore( m_hCpatureNew, 1, NULL );//每次增加指定的值
if( WaitForSingleObject(pThis->m_hCpatureNew, INFINITE )
== WAIT_OBJECT_0) // WAIT_TIMEOUT
消息比时间的方式更恰当,消息1是1\0模式,消息2是计数模式
Ps:每一个线程执行函数都是一个循环,循环结束则线程执行结束
设计代码时,一定要越简单越好