- 论坛徽章:
- 9
|
本帖最后由 wlmqgzm 于 2016-11-06 12:49 编辑
回复 10# VIP_fuck
我这边近期的研发方向比较超前, 基本上比较新的多线程技术都有可能实践, 最近负责下一代产品 底层库的研发工作, 因此, 对于C++多线程领域看的资料比较多.
主要是多线程下的高性能编程
1)高性能多线程数据交换模型: 高性能多线程无等待队列, 性能已经优化到单队列 数亿TPS 无锁双向数据交换能力, 包括 wait_free_spsc_queue, wait_free_mpsc_queue, wait_free_spmc_queue ,
同时与Boost::asio::io_service结合,解决CPU资源统一调度. 支持任意对象T的模板化编程.
主要的内存模型是: memory_order_release/acquire, 公司内部已经把boost::lock_free_spsc_queue队列彻底抛弃.
实践中主要的瓶颈是:io_service启动任务的延迟, 跨线程数据交换基本没有瓶颈.
2)高性能hash_map模型: 目前看在各场景下比std:unordered_map都要更节约内存, 性能上有30%到数倍的性能提高, 查询性能至少提高了70%. 主要模型是优化后的vector环形队列, 彻底抛弃了传统hash_map的模型
3)任意对象的无锁模型: 目前具备了一个以上的通用无锁模型, 可以用于任意对象的无锁编程, 这一块目前主要是测试验证, 不打算在主要核心模块进行推广, 通用模型主要的问题是性能比较低, 存在不值得付出的代价
前面答复中谈的 线程 A 线程 B, 就是通用无锁模型的一个范例.
|
|