文档章节

io_service线程安全队列效率

梦想游戏人
 梦想游戏人
发布于 2018/08/30 10:58
字数 202
阅读 52
收藏 0

boost::asio::io_service 的本质是一个消费者模型 多线程环境下 效率测试

空转的话效率大概是150W QPS,  模拟find操作的话是80W QPS,


std::map<int, int> _x;
int QPS_WRITE = 0;
io_service io;
int main(int argc, char* argv[])
{
	for (int i = 0; i < 10000; i++)
	{
		_x[i] = i;
	}
	for (int i = 0; i < 50; i++)
	{
		std::thread t([&]()
		{
			while (true)
			{
				this_thread::sleep_for(std::chrono::nanoseconds(1));
				for (int i = 0; i < 16; i++)
					io.post([&]()
				{
					++QPS_WRITE;
					for (int ii = 0; ii < 10; ii++)
						auto x = _x.find(ii);
				});
			}
		});
		t.detach();
	}

	std::thread t([&]()
	{
		while (true)
		{
			this_thread::sleep_for(std::chrono::seconds(1));
			cout << QPS_WRITE << endl;
			QPS_WRITE = 0;
		}
	});
	t.detach();


	io_service::work work(io);
	io.run();

	::system("pause");
	return 0;
}

 

© 著作权归作者所有

共有 人打赏支持
梦想游戏人
粉丝 36
博文 437
码字总数 124258
作品 0
成都
私信 提问
Boost::asio io_service 实现分析

Boost::asio io_service 实现分析 io_service的作用 io_servie 实现了一个任务队列,这里的任务就是void(void)的函数。Io_servie最常用的两个接口是post和run,post向任务队列中投递任务,r...

晨曦之光
2012/06/07
916
0
FF ASIO 异步消息网络框架

在前边http://www.cnblogs.com/zhiranok/archive/2011/12/12/boost_asio.html 我提到,针对前面使用boost asio 中遇到的问题,对asio进行封装,如下几个目标: 1. 创建socket、acceptor不再自...

晨曦之光
2012/06/07
211
0
C++ 多线程编程总结

C++ 多线程编程总结 在开发C++程序时,一般在吞吐量、并发、实时性上有较高的要求。设计C++程序时,总结起来可以从如下几点提高效率: l 并发 l 异步 l 缓存 下面将我平常工作中遇到一些问题...

晨曦之光
2012/06/07
265
0
如何提高Web服务端并发效率的异步编程技术

作为一名web工程师都希望自己做的web应用能被越来越多的人使用,如果我们所做的web应用随着用户的增多而宕机了,那么越来越多的人就会变得越来越少了,为了让我们的web应用能有更多人使用,我...

Mr_Tea
2016/01/13
257
1
C++ 多线程编程总结

在开发C++程序时,一般在吞吐量、并发、实时性上有较高的要求。设计C++程序时,总结起来可以从如下几点提高效率: 并发 异步 缓存 下面将我平常工作中遇到一些问题例举一二,其设计思想无非以...

虫虫
2012/05/16
17.5K
11

没有更多内容

加载失败,请刷新页面

加载更多

告别2018

今天中午从喵喵家回来之后,倒头就睡到下午4点了。可能是之前透支的身体,在我放松下来后,开始觉得疲惫了,所以最近估计会进入嗜睡期。醒来之后,拿了包花生,开了瓶低糖菊花茶,听着网易云...

七木网络科技
7分钟前
0
0
MySql数据库分表分区实践

1. 背景 —— 公司物联网项目 海量设备通过物联网服务接入云端,设备每30s上报一次自身数据(以下称为动态数据)。 物联网服务将设备上报的数据转发给数据处理网关,由数据入库网关执行批量入...

吴伟祥
20分钟前
0
0
大表关联走hash优化

大表关联走hash? 案例: ---- 反正我执行过1个多小时,没有跑完 SELECT a.id AS order_id ,b.s_id AS bill_id, d.id AS sub_order_id, d.deal_oper_id FROM EM_ORDER PARTITION(EM_ORDER_20......

hnairdb
32分钟前
0
0
MySQL查询执行

当我们希望MySQL能够以更高的性能运行查询时,最好的办法就是弄清楚MySQL是如何优化和执行查询的。一旦理解了这一点,很多查询优化工作实际上就是遵循一些原则让优化器能够按照预想的合理方式...

问题终结者
今天
1
0
CDH5动静态资源池配置与回滚

关于动态 静态资源池的配置以前都有提过,可以从以下几篇了解: YARN动态资源池配置案例 https://yq.aliyun.com/ziliao/346856# Hadoop YARN配置参数剖析(4)—Fair Scheduler相关参数 Hadoop...

hblt-j
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部