博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
发一个C++写的跨平台的BlockingQueue
阅读量:4049 次
发布时间:2019-05-25

本文共 1151 字,大约阅读时间需要 3 分钟。

BlockingQueue大家都不陌生吧,它简化了多线程的开发,常用于生产者-消费者模式。可惜只有java这些高级语言才提供。我参考了网上的跨平台线程类,写了个跨平台的BlockingQueue,希望对大家有帮助。

下载地址:

使用方法:

Linux下请切换到目录,make即可。(Makefile还不太熟悉,凑合着能用就行)

Windows下请用VS2005以上版本打开sln文件即可。

bin目录下有编译好的测试实例

==============================================================

未提供打包成库文件的命令,有需要者可自行打包。

测试代码(WIN32版)

#include "NetWay/BlockingQueue.h"#include 
#include
#include
using namespace std;NetWay::BlockingQueue
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 waiting printf("now the main thread is trying to poll an element/n"); try { bq.poll(3*1000); }catch(...) { printf("poll time out."); } cin>>dlen;}
 
代码可随意修改,转帖请注明出处。

转载地址:http://qebci.baihongyu.com/

你可能感兴趣的文章
9、VUE面经
查看>>
关于进制转换的具体实现代码
查看>>
Golang 数据可视化利器 go-echarts ,实际使用
查看>>
mysql 跨机器查询,使用dblink
查看>>
mysql5.6.34 升级到mysql5.7.32
查看>>
dba 常用查询
查看>>
Oracle 异机恢复
查看>>
Oracle 12C DG 搭建(RAC-RAC/RAC-单机)
查看>>
Truncate 表之恢复
查看>>
Oracle DG failover 后恢复
查看>>
mysql 主从同步配置
查看>>
为什么很多程序员都选择跳槽?
查看>>
mongdb介绍
查看>>
mongdb在java中的应用
查看>>
区块链技术让Yotta企业云盘为行政事业服务助力
查看>>
Yotta企业云盘更好的为媒体广告业服务
查看>>
Yotta企业云盘助力旅游行业新发展
查看>>
Yotta企业云盘助力科技行业创高峰
查看>>
Yotta企业云盘更好地为教育行业服务
查看>>
Yotta企业云盘怎么帮助到能源化工行业
查看>>