从声卡采集得数据放到一个缓冲队列中,有不定数目线程去读缓冲队列中数据,只有当所有得线程都读过一个缓冲区时,这个缓冲区才能再写进数据。怎么实现?
解决方案 »
- 关闭子窗口资源无法释放,不能再次打开。求救!!
- 做MODEM的語音答錄,使用TAPI什么版本比較好呢?tapi2.x還是tapi3.0?
- vc怎样读取html的东西并显示
- 如何让IE插件的内容不显示在网页中
- 迷惑不解的问题,在一个IE中运行多个相同控件,为什么其全局变量会被每个控件共同使用?怎么解决?
- 运算符转换问题
- 请教COM IClassFactory::LockServer的用法?
- 怎样使自己的程序不在CTRL+ALT+DEL中显示??
- 一个DLL调用的问题困扰我很久(分将加到200)
- 在INSTALLSHIELD6中怎样用代码写注册表???
- win32 sdk 文本颜色问题
- 一个问题!在线等待!谢谢!!!
你得方法我想过啦,这种方法不太好。
对每个缓冲区同样增加一个计数器accessCount,当每个线程访问过后加一;写缓冲区的线程要等到accesscount==threadCount后才可以更新缓冲区,更新后使accessCount=0。同样的,accessCount的写操作也要用CriticalSection保证访问的唯一性。
采集完设置为1,当所有的都为1时开始读缓冲的内容
对每个缓冲区同样增加一个计数器accessCount,当每个线程访问过后加一;写缓冲区的线程要等到accesscount==threadCount后才可以更新缓冲区,更新后使accessCount=0。同样的,accessCount的写操作也要用CriticalSection保证访问的唯一性。
其实这种方法本质上面就是信号量机制