线程的同步与异步

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:每一个线程执行函数都是一个循环,循环结束则线程执行结束

    设计代码时,一定要越简单越好

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值