更推荐使用: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. CPU 硬盘性能到底相差多少

    本文以一个现代的.实际的个人电脑为对象,分析其中CPU(Intel Core 2 Duo 3.0GHz)以及各类子系统的运行速度——延迟和数据吞吐量.通过粗略的估算PC各个组件的相对运行速度,希望能给 ...

  2. SQL Server 2008复制发布订阅(数据同步)

    数据库同步问题 1.有一台主数据库服务器A和另外一台数据库服务器B,客户端首先访问数据库B,当B数据库服务器挂掉时就访问A,当对数据库B进行DML操作时,同时对A进行更新,如果A与B之间通讯失败,则将 ...

  3. SliverLight(how to show data point on the column series)

    You should know that Silverlight comes with win form drawing software is different, it has no the la ...

  4. 对Json字符串进行格式化显示

    很多时候,我们拿Json字符串作为返回结果,但是当数据量多的时候,一堆的Json字符串看起来很不直观,这时候我们可以使用以下办法将Json字符串格式化一下再输出 var JsonUti = { //定 ...

  5. SDWebImage缓存清理

    //计算缓存大小 [SDImageCache sharedImageCache] getSize] //清理缓存 SDImageCache *sd = [[SDImageCache alloc]ini ...

  6. 对App数据库元素进行简单的设计

    假如对<豆瓣>进行简单的数据库元素设计; 分析页面: 简单的豆瓣一共有以下页面{ 活动页面 活动详情页面 电影页面 电影详情页面 影院页面(一般不用到数据库,不及于数据库考虑) 我的{ 活 ...

  7. flume+kafka (分区实现 默认单分区) (二)

    这篇文章主要在上一篇文章的基础上讲一下 如何自定义flume到kafka的分区 上一节中从下面的地址下载了一个源码 https://github.com/beyondj2ee/flumeng-kafk ...

  8. 洛谷 P3374 【模板】树状数组 1

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个数. ...

  9. 判断不在Update Task中

    CALL FUNCTION 'TH_IN_UPDATE_TASK'   IMPORTING     IN_UPDATE_TASK = IN_UPDATE_TASK.  "0 then not ...

  10. 【风马一族_Python】 更替pip的版本

    替换电脑上python中的pip的版本 例子: 下载的文件:pip-8.1.1-py2.py3-none-any.whl 下载地址:https://pypi.python.org/pypi/pip/# ...