多线程
文章平均质量分 86
jiange_zh
linux 网络编程 C++ 算法 数据结构
展开
-
C++异步调用利器future/promise实现原理
前言在异步编程中,各种回调将让人眼花缭乱,代码分散,维护起来十分困难。boost和C++11 的 future/promise 提供了一个很好的解决方案,使得代码更加漂亮、易维护。在工作中,我也用过几次future/promise,但是还是十分生疏,所以决定学习下它的原理,用起来才更加顺畅。查了很多资料,发现很多语言都有这个机制,但是关于C++的promise的资料却很少,只有一些使用的教程,而没有原创 2016-09-14 23:24:42 · 28769 阅读 · 10 评论 -
《Linux多线程服务端编程》—线程安全的对象生命期管理
当一个对象能被多个线程同时看到时,对象的销毁时机变得模糊不清,可能出现多种竞态条件(race condition): 1. 在即将析构一个对象时,从何而知此刻是否有别的线程正在执行该对象的成员函数? 2. 如何保证在执行成员函数期间,对象不会在另一个线程被析构? 3. 在调用某个对象的成员函数之前,如何得知这个对象还活着?它的析构函数会不会碰巧执行到一半?线程安全的定义依据[JCP],一个线程原创 2016-09-05 00:08:13 · 1059 阅读 · 0 评论 -
《Linux多线程服务端编程》—线程同步精要
并发编程的两种基本模型:message passing 和 shared memory。使用message passing 可以跨机器,分布式系统的架构更具有一致性,扩容起来也较容易。线程同步的四项原则按重要性排序:首要原则是尽量最低限度地共享对象,减少需要同步的场合。一个对象能不暴露给别的线程就不要暴露;如果要暴露,优先考虑immutable对象;实在不行才暴露可修改的对象,并用同步措施来充分保原创 2016-09-06 14:16:50 · 2531 阅读 · 1 评论 -
hashmap C++实现分析
一、简介Map 是 Key-Value 对映射的抽象接口,该映射不包括重复的键,即一个键对应一个值。在HashMap中,其会根据hash算法来计算key-value的存储位置并进行快速存取。本文介绍的C++ hashmap,是一个缓存用的hash_map,实现模仿自Java的HashMap,做了一些改造和精简。特点:无读锁, 低写锁, 不删除只添加/更新, 桶不扩容, 按经验值初始...原创 2018-08-12 17:24:50 · 18683 阅读 · 0 评论