生产者、消费者队列的代码和文档和例子,CSDN或别的网站上已经有很多了,我就不再多说了。不过一般的文档中给出的例子往往只是“例子”,要用于实际的项目开发中差的很远,共享一下我以前写的一个线程安全的生产者消费者队列类。具有如下特点:
1.可以设置队列中的最大长度;
2.线程安全;
3.多线程想向队列中放入数据时,可设置等待队列有空位的超时时间,当有空位时,等待线程会被唤醒并将数据加入队列。函数原型为:FTLThreadWaitType Append(const ELEMENT& element, DWORD dwTimeOut).
4.多线程从队列中取出数据时,可设置等待队列有数据的超时时间, 当有数据时等待线程会被唤醒。函数原型为:FTLThreadWaitType Remove(ELEMENT& element, DWORD dwTimeOut),
5.支持安全的退出,即如果在等待加入数据或取出数据时,能直接通过Stop唤醒。
6.支持动态改变队列大小 -- 但这个功能我测试的不是很多,可能有Bug,如发现有Bug请告诉我。
7.和我其他FTL中的类一样,支持模版。
本次就偷一下懒,只上传源码和UT代码,就不再写示例程序了。下载了源码以后需要自己对应更改一下(如果实在更改不来,可以给我回复信息,我有空时再写个Demo放上来)。
博客地址:http://blog.csdn.net/fishjam/article/details/8832145
1