C+= concurrent_queue 线程安全测试
更推荐使用: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 线程安全测试的更多相关文章
- Python_线程、线程效率测试、数据隔离测试、主线程和子线程
0.进程中的概念 三状态:就绪.运行.阻塞 就绪(Ready):当进程已分配到除CPU以外的所有必要资源,只要获得处理机便可立即执行,这时的进程状态成为就绪状态. 执行/运行(Running)状态:当 ...
- ArrayList的线程安全测试
public class TestThread implements Runnable{ private List list; CountDownLatch cdl; public TestThrea ...
- Ultimate thread group线程组和Stepping thread group线程组测试场景
Ultimate thread group线程组 当测试需求是要求进行波浪型的压力测试场景时,使用该线程组,例如:测试场景总共有10个线程,然后分为三个波段进行测试,每个波段负载策略设置为一样,如图:
- [原创] JAVA 递归线程池测试 ExecutorService / ForkJoinPool
测试工具使用递归的方式获取子进程的Msg消息,目前有2种常用的ExecutorService / ForkJoinPool 为了测试哪种效果较好,我们来写个测试Demo,循环5555555次+1(加锁 ...
- java集合线程安全测试
package com.cxy; import java.util.HashMap; import java.util.Hashtable; import java.util.Map; import ...
- JAVA 递归线程池测试 ExecutorService / ForkJoinPool
测试工具使用递归的方式获取子进程的Msg消息,目前有2种常用的ExecutorService / ForkJoinPool 为了测试哪种效果较好,我们来写个测试Demo,循环5555555次+1(加锁 ...
- 使用线程池测试cpu的并发计算能力
接到一个需求是测试一下cpu并发计算能力,针对int和float求和单位时间能执行几次的问题.可能是服务器选型用到的参数. 开始使用的是fork-join,但是发现fork-join每次得到的结果值波 ...
- 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 ...
- List 集合线程安全测试
最近在做一些代码整理工作,涉及到List 线程安全问题,查了一些资料.网上有些资料说List 增减成员(Add , Remove) 是安全的,但不保证成员属性值访问安全性,及禁止对 List 跨线程遍 ...
随机推荐
- CPU 硬盘性能到底相差多少
本文以一个现代的.实际的个人电脑为对象,分析其中CPU(Intel Core 2 Duo 3.0GHz)以及各类子系统的运行速度——延迟和数据吞吐量.通过粗略的估算PC各个组件的相对运行速度,希望能给 ...
- SQL Server 2008复制发布订阅(数据同步)
数据库同步问题 1.有一台主数据库服务器A和另外一台数据库服务器B,客户端首先访问数据库B,当B数据库服务器挂掉时就访问A,当对数据库B进行DML操作时,同时对A进行更新,如果A与B之间通讯失败,则将 ...
- 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 ...
- 对Json字符串进行格式化显示
很多时候,我们拿Json字符串作为返回结果,但是当数据量多的时候,一堆的Json字符串看起来很不直观,这时候我们可以使用以下办法将Json字符串格式化一下再输出 var JsonUti = { //定 ...
- SDWebImage缓存清理
//计算缓存大小 [SDImageCache sharedImageCache] getSize] //清理缓存 SDImageCache *sd = [[SDImageCache alloc]ini ...
- 对App数据库元素进行简单的设计
假如对<豆瓣>进行简单的数据库元素设计; 分析页面: 简单的豆瓣一共有以下页面{ 活动页面 活动详情页面 电影页面 电影详情页面 影院页面(一般不用到数据库,不及于数据库考虑) 我的{ 活 ...
- flume+kafka (分区实现 默认单分区) (二)
这篇文章主要在上一篇文章的基础上讲一下 如何自定义flume到kafka的分区 上一节中从下面的地址下载了一个源码 https://github.com/beyondj2ee/flumeng-kafk ...
- 洛谷 P3374 【模板】树状数组 1
题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个数. ...
- 判断不在Update Task中
CALL FUNCTION 'TH_IN_UPDATE_TASK' IMPORTING IN_UPDATE_TASK = IN_UPDATE_TASK. "0 then not ...
- 【风马一族_Python】 更替pip的版本
替换电脑上python中的pip的版本 例子: 下载的文件:pip-8.1.1-py2.py3-none-any.whl 下载地址:https://pypi.python.org/pypi/pip/# ...