更推荐使用: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. 关于DB2 SQL0805N找不到程序包的错误解决办法

    DB2在执行SQL语句的时候会使用内部定义的包(package)来保持不同级别的游标的稳定性, 包的名字就是“ULLID.SYSLH2XX“. DB2 里面默认的时候会创建3个这样的包即SYSLH20 ...

  2. Linux基本服务命令

    启动Httpd服务:service httpd start 停止Httpd服务:service httpd stop 重启Httpd服务:service httpd restart 关闭httpd所有 ...

  3. 20140122-Application19事件

  4. 一些常用css技巧的为什么(二)我所理解的line-height

    要用到的基本术语和概念: 替换元素:用作为其他内容占位符的一个元素,或说替换元素内容的部分并非由文档内容直接表示.比如img元素它由文档本身之外的一个图像来替换,比如input元素要由一个单选按钮,复 ...

  5. MYSQL基础03(日期函数)

    工作中对日期的处理是经常遇到的,需求可能多种多样,因此重点介绍. 1.获取当前日期 select NOW() -- 结果:2015-10-28 22:41:11 ),NOW() -- 结果 2015- ...

  6. CXF和Axis的比较【转】

    在SOA领域,我们认为Web Service是SOA体系的构建单元(building block).对于服务开发人员来说,AXIS和CXF一定都不会陌生.这两个产品都是Apache孵化器下面的Web ...

  7. BCB6中SCALERICHVIEW加入GIF动画

    记载下,花了不少时间. 1.  项目导入文件GIFImage.pas 来源:http://melander.dk/delphi/gifimage/ 2.  项目导入文件RVGifAnimate.pas ...

  8. TCP之Socket的编程

    Socket是网络编程的一个抽象的概念,通常我们用Socket来表示服务器与客户端间的网络连接, 即用Socket表示"打开了一个网络连接", 而打开一个网络连接需要知道目标电脑的 ...

  9. System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本

    说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.ServiceModel.FaultEx ...

  10. Gulpfile.js——编译、压缩、合并js和css文件

    gulp 一个入门教程:http://www.ydcss.com/gulp API文档地址:http://www.gulpjs.com.cn/docs/api/ 我的一个Low版的gulpfile v ...