发一个C++写的跨平台的BlockingQueue
来源:互联网 发布:coc杯段奖励数据 编辑:程序博客网 时间:2024/05/22 07:48
BlockingQueue大家都不陌生吧,它简化了多线程的开发,常用于生产者-消费者模式。可惜只有java这些高级语言才提供。我参考了网上的跨平台线程类,写了个跨平台的BlockingQueue,希望对大家有帮助。
下载地址:http://download.csdn.net/source/2052785
使用方法:
Linux下请切换到目录,make即可。(Makefile还不太熟悉,凑合着能用就行)
Windows下请用VS2005以上版本打开sln文件即可。
bin目录下有编译好的测试实例
==============================================================
未提供打包成库文件的命令,有需要者可自行打包。
测试代码(WIN32版)
#include "NetWay/BlockingQueue.h"#include <iostream>#include <string>#include <windows.h>using namespace std;NetWay::BlockingQueue<string> bq;DWORD WINAPI ThreadFunc(LPVOID lpParam){int* n = (int *)lpParam;printf("Thread %d is waiting/n",n);string str = bq.take();printf("Thread %d got an element:%s /n",n,str.c_str());return 0;}void main(){DWORD dlen;for(int i = 0; i < 5; i++){CreateThread(NULL,0,ThreadFunc,(LPVOID)i,0,&dlen);}Sleep(2*1000); // all threads are waiting.bq.enqueue("1");bq.enqueue("2");bq.enqueue("3");Sleep(3*1000); // still 2 threads are waiting.bq.enqueue("4");Sleep(2*1000); // only 1 thread is waitingprintf("now the main thread is trying to poll an element/n");try {bq.poll(3*1000);}catch(...){printf("poll time out.");}cin>>dlen;}
代码可随意修改,转帖请注明出处。
- 发一个C++写的跨平台的BlockingQueue
- 发一个c语言写的俄罗斯方块的代码 [
- 发一个Lua写的小玩具
- 发一个自己写的服务程序
- 一个C++的BlockingQueue实现
- BlockingQueue的一个小例子
- 我写了一个高并发的BlockingQueue,有兴趣的可以看看
- 发一个以前写的sql2000的分页存储过程。。
- 发一个python写的简单的mp3播放器
- 发一个我自己写的RSA加密算法!
- linux写一个监控日志,发邮件的shell
- 发一下我写的deep learning中的一个代码
- 用MATLAB写一个发邮件的小程序
- [C#]用mono写跨平台的C#程序
- 用c写了一个向sohu微博发信息的程序,不知为什么发中文时总是乱码?
- Linux平台下从零开始写一个C语言访问MySQL的测试程序
- 为了发图片,必须要写一篇博客,发一个若干年前写的小文章吧!
- 先发一个简单的C#的程序结构
- VMware ESX Server 常用命令行
- ActiveSync安装应用简介
- asp.ne改变datatable中的数据
- VMware ESX Server 常用命令集
- VMware ESX Command 命令集
- 发一个C++写的跨平台的BlockingQueue
- PHP和jQuery实现截图自定义头像
- 关于Adobe bridge 的介绍
- Qt 中的可点击Label
- 深入理解PHP原理之错误抑制与内嵌HTML
- 什么是eboot,nboot,uboot
- PHP中microtime()函数
- vc常用到的快捷键
- php header() 函数详解