
C++多线程并行
编程小问号
这个作者很懒,什么都没留下…
展开
-
非阻塞同步算法与CAS(Compare and Swap)无锁算法
锁(lock)的代价锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,加锁、释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很大的损失。操作系统对多线程的锁进行判断就像两姐妹在为一个玩具在争吵,然后操作系统就是能决定他们谁能拿到玩具的父母,这是很慢的。用转载 2015-11-23 13:06:45 · 1081 阅读 · 0 评论 -
关于CPU编程—无锁编程
Lock-free 算法通常比基于锁的算法要好:从其定义来看,它们是 wait-free 的,可以确保线程永远不会阻塞。状态转变是原子性的,以至于在任何点失败都不会恶化数据结构。因为线程永远不会阻塞,所以当同步的细粒度是单一原子写或比较交换时,它们通常可以带来更高的吞吐量。在某些情况下,lock-free 算法会有更少的同步写操作(比如 Interlocked 操作),因此纯粹从性能来看,转载 2015-11-23 13:09:34 · 1276 阅读 · 0 评论 -
c++11:多线程
很高兴c++11的标准库可以#include 了。boost早就提供了类似功能。这时候考虑下开发商、物业公司联合阻碍成立业主委员会的借口之一:会妨碍事情的正常进展,推断也许他们也是c++的长期使用者:)1、pthread_xx的封装 stl提供了(目前)五个头文件以支持多线程:atomic(提供原子操作功能)、thread(线程模型封装)、mutex(互斥量)、con转载 2015-11-18 18:48:25 · 413 阅读 · 0 评论 -
C++小品:榨干性能:C++11中的原子操作(atomic operation)
所谓的原子操作,取的就是“原子是最小的、不可分割的最小个体”的意义,它表示在多个线程访问同一个全局资源的时候,能够确保所有其他的线程都不在同一时间内访问相同的资源。也就是他确保了在同一时刻只有唯一的线程对这个资源进行访问。这有点类似互斥对象对共享资源的访问的保护,但是原子操作更加接近底层,因而效率更高。在以往的C++标准中并没有对原子操作进行规定,我们往往是使用汇编语言,或者是借助第三方的转载 2015-11-03 13:36:06 · 2925 阅读 · 0 评论 -
jsoncpp解析拼装数组
Cocos2d-x添加jsoncpp应该资料都有了,今天来讲讲数组的解析和拼装~[cpp] view plain copyint main() { 数组创建与分析: 例子一: string strValue = "{\"ldh\":\"001\",\"gfc\":\"002\",\"yyj\":\"003\",\"an转载 2016-05-17 19:45:01 · 9753 阅读 · 0 评论