更推荐使用:http://www.boost.org/doc/libs/1_56_0/doc/html/boost/lockfree/queue.html

#include <include/tbb/tbb.h>
#include <pthread.h>
#include <iostream>
using namespace std; #define NUM_THREAD 10
class person {
public:
person() {
}
person(int name, unsigned int thread_num){
this->name = name;
this->thread_num = thread_num;
} void print() {
printf("%u\t%u\n", thread_num, name);
}
private:
int name;
unsigned int thread_num;
}; tbb::strict_ppl::concurrent_queue<person*> que; void* consumer(void* arg) {
cout << arg << endl;
while(true) {
if(que.empty()) {
cout << '.' << flush;
sleep();
}
person* p;
if(que.try_pop(p)) {
p->print();
}
}
} void* producer(void* arg) {
cout << arg << endl;
unsigned int thread_num =(unsigned int)pthread_self();
for(int i=; i<; i++) {
person* p = new person(i, thread_num);
que.push(p);
}
} int main()
{
pthread_t tids_c[NUM_THREAD];
for(int i=; i<NUM_THREAD; i++) {
int ret = pthread_create(&tids_c[i], NULL, consumer, NULL);
if(ret != ) {
cout << "start consumer failed" << endl;
return -;
}
} pthread_t tids[NUM_THREAD];
for(int i=; i<NUM_THREAD; i++) {
int ret = pthread_create(&tids[i], NULL, producer, NULL);
if(ret != ) {
cout << "start produer failed" << endl;
return -;
}
} for(int i=; i<NUM_THREAD; i++){
pthread_join(tids[i], NULL);
pthread_join(tids_c[i], NULL);
} cout << "exit" << endl;
} /* vim: set ts=4 sw=4 sts=4 tw=100 */
dic = {}
with open('log.txt') as f:
while True:
line = f.readline()
if not line:
break;
line = line.strip() arr = line.split('\t')
key = arr[] if key not in dic:
dic[key] =
else:
dic[key] += for key in dic:
print key, dic[key]

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAC2CAIAAADsnLLfAAADdklEQVR4nO2d3ZGDMAyEqYuCPJNuKCFV0AzFcA+QwwaRSCLymszu22UY+E7xjxbJd93z+Xw8Hl2pfpjmVWPqvqw0zrnEB/TDNE9Dv/tUZG1UZI0RWWN0wrqsBPpFQL5+m/LHSe2QwJrGeZ6GYdSynly/fNx33fqbXF/9DqxpXO6alKxn16cxD2YG/kXW/O6WUOyuL35c95arkQ1kXeK4fv/9MLXNmoZpzpAbZi2mv/V2kqJYd1P/G2ENY62yZmX5oGodf3P9t1PLH9hjmxRZY0TWGJE1RiKrPZ8H+QLz3gj1BaZ8HugL3Pk8wBe483mAL3Dn8wBf4M7nAb7Anc9DfIFzrUH4gs6Yz9MXiCJrjMgaI7LG6N6sxeKuXcNR9YLyWZ9pcb4gl1wWPZDC6wVK1JwNUi/4H2eGUCDrBV13KSesWi8QCUys9eoF/49QjgNkveD1fO2QhdcLFPenLxBF1hiRNUZkjdHdWbOOv7Z9Qb5z6/bYNnyBBrYRX2B6BLKPyIiK9QXGNj2gL0ijcfaifEG/xcPLWscXeEA7jC/YtX5/nL/0BaLIGiOyxoisMbo3625x1+1goHqBeesG+gIjK9QXOFMiiC8oxqs+Fuh6gSXhZr2g0HtWwwQG1wtMDgHSR5QbA9YLvCJrjMgaI7LG6DdYl5VcuW1B+4j6YZqnSdXvgq4XLOmnptMBXS94PVfflYGqF2z52zXWeF+QN2VdZY0/X1Ak81fGQLAvEN5qK1ecBvqIvHGtXuPUsNIXiCJrjMgaI7LG6M6sx6Xd8KYIeb5A3bXfSh/Rh2egfcEqUziwfUSmoxDYeoExOwbWC2xBFVlr1QvscwHmCxxRAPkCU1DpC0SRNUZkjRFZY/QDrNsy3nQfkTkZAPoCey4I8wXejAjhC7Yk2TbQAL6grMD5+12q+ILd+2H16EX4grPv0sha73xBVjRy9pJVe5dhWcPpC0SRNUZkjRFZY3R3Vscajjt3nKdZDZ873iUZn9MjoC8Q0iVXnlXLF5Sptpu1Rr0g99vpQlx5vuBKLe7k0sp9RGm0zAfw+QLV3ekLRJE1RmSNEVljdHfWvGG36fMFRcaqSl9x9YJyX2/aFxQnIi1PgPURvQbaxd6ccF+wxTVZ/s4PqF6wG69ub1jj/xdkcG4fW8UXFG7AYA2AfUTqhJ6+QBRZY3Qj1j/sqw7ZRCmU4QAAAABJRU5ErkJggg==" alt="" />

C+= concurrent_queue 线程安全测试的更多相关文章

  1. Python_线程、线程效率测试、数据隔离测试、主线程和子线程

    0.进程中的概念 三状态:就绪.运行.阻塞 就绪(Ready):当进程已分配到除CPU以外的所有必要资源,只要获得处理机便可立即执行,这时的进程状态成为就绪状态. 执行/运行(Running)状态:当 ...

  2. ArrayList的线程安全测试

    public class TestThread implements Runnable{ private List list; CountDownLatch cdl; public TestThrea ...

  3. Ultimate thread group线程组和Stepping thread group线程组测试场景

    Ultimate thread group线程组 当测试需求是要求进行波浪型的压力测试场景时,使用该线程组,例如:测试场景总共有10个线程,然后分为三个波段进行测试,每个波段负载策略设置为一样,如图:

  4. [原创] JAVA 递归线程池测试 ExecutorService / ForkJoinPool

    测试工具使用递归的方式获取子进程的Msg消息,目前有2种常用的ExecutorService / ForkJoinPool 为了测试哪种效果较好,我们来写个测试Demo,循环5555555次+1(加锁 ...

  5. java集合线程安全测试

    package com.cxy; import java.util.HashMap; import java.util.Hashtable; import java.util.Map; import ...

  6. JAVA 递归线程池测试 ExecutorService / ForkJoinPool

    测试工具使用递归的方式获取子进程的Msg消息,目前有2种常用的ExecutorService / ForkJoinPool 为了测试哪种效果较好,我们来写个测试Demo,循环5555555次+1(加锁 ...

  7. 使用线程池测试cpu的并发计算能力

    接到一个需求是测试一下cpu并发计算能力,针对int和float求和单位时间能执行几次的问题.可能是服务器选型用到的参数. 开始使用的是fork-join,但是发现fork-join每次得到的结果值波 ...

  8. Web调优之IBM JDK+liberty(一): Jmeter pod里压力,50个线程并发测试,调整 -Xms -Xms, Log原来是大问题

    1.运行环境 k8s Web服务器: Liberty(IBM J9 JDK),base image : FROM websphere-liberty:20.0.0.3-kernel-java8-ibm ...

  9. List 集合线程安全测试

    最近在做一些代码整理工作,涉及到List 线程安全问题,查了一些资料.网上有些资料说List 增减成员(Add , Remove) 是安全的,但不保证成员属性值访问安全性,及禁止对 List 跨线程遍 ...

随机推荐

  1. 收集一下Windows7系统啊

    Windows7系统:http://down.662p.com/list/141_1.html   萝卜家园WIN7系统X86位旗舰特别GHOST版2014年12月 这个是萝卜家园WIN7系统X86位 ...

  2. [老老实实学WCF] 第一篇 Hello WCF

    老老实实学WCF  第一篇 Hello WCF WCF(Windows Communication Foundation)是微软公司推出的面向服务技术的集大成者,涵盖继承了其之前发布的所有的分布式应用 ...

  3. Xcode中如何更改Bundle identifier

    1.如图所示,更改Info.plist 中的Bundle identifier

  4. linux下开发板网络速度测试记录

        由于做的项目对于网络和USB的读写速度有很高的要求,因此新拿回来的板子要测试网络和usb的最佳传输速度.要考虑不少因素,先把我能想到的记录下来.     测试的环境是开发板和ubuntu虚拟机 ...

  5. CSS3伪类

    1.:last-child 比如:查找ul的最后一个li ul li:last-child { //样式 } 2.:first-child 比如:查找ul的第一个li ul li:first-chil ...

  6. EDK中如何使用ISE中生成的IP

    EDK中如何使用ISE中生成的IP: 网上上有说这个的文章,但是很复杂,也就是添加bdd文件,其实这些都不需要自己操作的,我们可以在EDK中import 中添加ngc文件,ngc文件就是core ge ...

  7. centos安装环境准备工作

    我们的centos系统安装好了,并且网络已经连通了,接下来介绍一下,在外网连通的情况下,我们如何安装tar.gz等形式的软件. centos安装后如果想作为正常应用development tools和 ...

  8. CentOS 7 用户账户配置

    说明: 1.这篇博文记录的是CentOS 7 用户账户的配置,包括添加用户.添加用户组.删除用户.删除用户组等.其中包括分析用户的配置文件.目录以及对安全的思考. 2.用户配置方面CentOS 7与以 ...

  9. DWZ前端框架使用问题记录

    心得体验:DWZ依赖特定的HTML结构,所以一定要注意项目中的HTML结构,多用firebug查看,还有如果使用一些组件的时候出现问题,可以查看下返回JSON格式是否符合组件规定的JSON格式,很多都 ...

  10. Java抽象类和抽象方法例子

    题目:定义Shape类表示一般二维图形.Shape具有抽象方法area和perimeter,分别计算形状的面积和周长.试定义一些二维形状类(如矩形.三角形.圆形等),这些均为Shape类的子类并计算出 ...