代码改变世界

随笔分类 -  C & C++

C++11 并发指南七(C++11 内存模型一:介绍)

2013-11-14 16:38 by Haippy, 42254 阅读, 收藏, 编辑
摘要: 第六章主要介绍了 C++11 中的原子类型及其相关的API,原子类型的大多数 API 都需要程序员提供一个 std::memory_order(可译为内存序,访存顺序) 的枚举类型值作为参数,比如:atomic_store,atomic_load,atomic_exchange,atomic_compare_exchange 等 API 的最后一个形参为 std::memory_order order,默认值是 std::memory_order_seq_cst(顺序一致性)。那么究竟什么是 std::memory_order 呢,为了解答这个问题,我们先来讨论 C++11 的内存模型。 阅读全文

C++11 并发指南六(atomic 类型详解四 C 风格原子操作介绍)

2013-09-07 11:18 by Haippy, 29908 阅读, 收藏, 编辑
摘要: 前面三篇文章《C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍)》、《C++11 并发指南六( 类型详解二 std::atomic )》、《C++11 并发指南六(atomic 类型详解三 std::atomic (续))》都是采用 C++ 的方式介绍原子对象,本节我会给大家介绍 C++11 原子操作中 C 风格的 API。 阅读全文

C++11 并发指南六(atomic 类型详解三 std::atomic (续))

2013-09-06 11:22 by Haippy, 28186 阅读, 收藏, 编辑
摘要: C++11 并发指南六( 类型详解二 std::atomic ) 介绍了基本的原子类型 std::atomic 的用法,本节我会给大家介绍C++11 标准库中的 std::atomic 针对整形(integral)和指针类型的特化版本做了哪些改进。 阅读全文

C++11 并发指南六( <atomic> 类型详解二 std::atomic )

2013-09-05 22:32 by Haippy, 90802 阅读, 收藏, 编辑
摘要: C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍) 一文介绍了 C++11 中最简单的原子类型 std::atomic_flag,但是 std::atomic_flag 过于简单,只提供了 test_and_set 和 clear 两个 API,不能满足其他需求(如 store, load, exchange, compare_exchange 等),因此本文将介绍功能更加完善的 std::atomic 类。 阅读全文

C++11 并发指南后续更新

2013-08-31 17:28 by Haippy, 11344 阅读, 收藏, 编辑
摘要: C++11 并发指南的第一篇是 2013 年 8 月 3 号写的,到今天(2013 年 8 月 31 号)差不多一个月了,前前后后共写了 8 篇博客介绍 C++11 的并发编程,但还差 atomic 和 C++11 内存模型两章还在草稿中。今天回顾一下之前写的博客,发现内容还远远不够,很多东西都还也有完成,和自己计划差距还很远,我也想把这个系列一直写下去,一来对自己也是一种提高,另外 C++11 是一种趋势,了解 C++11 的并发编程对一个新时代的 C++ 程序员来说也是必修课,我也希望自己的这个系列博客能够帮助大家学习 C++11 的并发编程,所以我后面会把 《C++11 并发指南》放在 github 上持续更新 阅读全文

C++11 并发指南系列

2013-08-27 11:32 by Haippy, 95737 阅读, 收藏, 编辑
摘要: 本系列文章主要介绍 C++11 并发编程,计划分为 9 章介绍 C++11 的并发和多线程编程 阅读全文

C++11 并发指南四(<future> 详解三 std::future & std::shared_future)

2013-08-27 10:55 by Haippy, 80057 阅读, 收藏, 编辑
摘要: 上一讲《C++11 并发指南四(future 详解二 std::packaged_task 介绍)》主要介绍了 future 头文件中的 std::packaged_task 类,本文主要介绍 std::future,std::shared_future 以及 std::future_error,另外还会介绍 future 头文件中的 std::async,std::future_category 函数以及相关枚举类型。 阅读全文

C++11 并发指南四(<future> 详解二 std::packaged_task 介绍)

2013-08-24 22:20 by Haippy, 46050 阅读, 收藏, 编辑
摘要: 上一讲《C++ 并发指南四(std::future 详解一)》主要介绍了 头文件中的 std::promise 类,本文主要介绍 std::packaged_task。 阅读全文

C++11 并发指南四(<future> 详解一 std::promise 介绍)

2013-08-24 12:20 by Haippy, 84936 阅读, 收藏, 编辑
摘要: 前面两讲《C++11 并发指南二(std::thread 详解)》,《C++11 并发指南三(std::mutex 详解)》分别介绍了 std::thread 和 std::mutex,相信读者对 C++11 中的多线程编程有了一个最基本的认识,本文将介绍 C++11 标准中 头文件里面的类和相关函数。 阅读全文

C++11 并发指南九(综合运用: C++11 多线程下生产者消费者模型详解)

2013-08-11 23:17 by Haippy, 55167 阅读, 收藏, 编辑
摘要: 前面八章介绍了 C++11 并发编程的基础(抱歉哈,第四章-第八章还在草稿中),本文将综合运用 C++11 中的新的基础设施(主要是多线程、锁、条件变量)来阐述一个经典问题——生产者消费者模型,并给出完整的解决方案。 生产者消费者问题是多线程并发中一个非常经典的问题,相信学过操作系统课程的同学都清楚这个问题的根源。本文将就四种情况分析并介绍生产者和消费者问题,它们分别是:单生产者-单消费者模型,单生产者-多消费者模型,多生产者-单消费者模型,多生产者-多消费者模型,我会给出四种情况下的 C++11 并发解决方案,如果文中出现了错误或者你对代码有异议,欢迎交流 ;-)。 阅读全文

C++11 并发指南二(std::thread 详解)

2013-08-04 13:37 by Haippy, 192188 阅读, 收藏, 编辑
摘要: 上一篇博客《C++11 并发指南一(C++11 多线程初探)》中只是提到了 std::thread 的基本用法,并给出了一个最简单的例子,本文将稍微详细地介绍 std::thread 的用法。 阅读全文

C++11 并发指南一(C++11 多线程初探)

2013-08-03 22:27 by Haippy, 158537 阅读, 收藏, 编辑
摘要: C++11 自2011年已经发布以来快两年了,之前一直没怎么关注,直到最近几个月才看了一些 C++11 的新特性,今后几篇博客我都会写一些关于 C++11 的特性,算是记录一下自己学到的东西吧,和大家共勉。 相信 Linux 程序员都用过 Pthread, 但有了 C++11 的 std:thread 以后,你可以在语言层面编写多线程程序了,直接的好处就是多线程程序的可移植性得到了很大的提高,所以作为一名 C++ 程序员,熟悉 C++11 的多线程编程方式还是很有益处的。 阅读全文

CEF3 笔记三(常用类的介绍)

2013-06-10 23:17 by Haippy, 21336 阅读, 收藏, 编辑
摘要: 接上文《CEF3 笔记二(常用的类介绍)》 阅读全文

CEF3 笔记二(常用类的介绍)

2013-06-10 23:16 by Haippy, 22054 阅读, 收藏, 编辑
摘要: CEF3 作为一个基于 Chromium 的嵌入式浏览器框架为开发者提供了几个基本的接口类来完成一些基本功能。 阅读全文

CEF3 笔记一(介绍)

2013-06-10 23:15 by Haippy, 23387 阅读, 收藏, 编辑
摘要: CEF 作为嵌入式浏览器框架最适合的应用场景应该是 HTML 页面渲染,所以很多程序都基于 CEF 来来应用程序提供 HTML 页面渲染的功能,如有道笔记,Evernote,GitHub Window Client,Q+,Adobe Brackets 等 阅读全文

C++11 lambda 表达式解析

2013-05-31 23:04 by Haippy, 95555 阅读, 收藏, 编辑
摘要: C++11 新增了很多特性,lambda 表达式是其中之一,如果你想了解的 C++11 完整特性,建议去这里,这里,这里,还有这里看看。本文作为 5 月的最后一篇博客,将介绍 C++11 的 lambda 表达式。 阅读全文

如何实现简单的位数组(bit array)

2013-05-27 22:02 by Haippy, 12165 阅读, 收藏, 编辑
摘要: 在 comp.lang.c 上面看到一则不错的 FAQ,《How can I implement sets or arrays of bits?》感觉很实用,仅仅使用了几个简单的宏就实现了一个基本的位数组(bitset)。 阅读全文

Zookeeper 的 Lua 绑定(二)

2013-04-15 22:19 by Haippy, 3280 阅读, 收藏, 编辑
摘要: 经过前一段时间的开发和完善,Zookeeper 的 Lua 绑定已经基本完工了,一共42个Public APIs(还剩两个TODOs),主要由同步和异步接口以及一些辅助APIs组成。后续主要就是多写文档,多做测试,多除 Bug ;-) 阅读全文

Zookeeper 的 Lua 绑定

2013-04-07 00:07 by Haippy, 5206 阅读, 收藏, 编辑
摘要: 以前写过一些有关 Zookeeper C API 的文章,自己觉得对 Zookeeper C API 比较熟悉,就想能不能利用 Zookeeper C API 给 Zookeeper 写一个 Lua 绑定呢,Google 一下发现以前也并没有人给 Zookeeper 贡献过 Lua 接口,python,ruby,GO,Node.js 等都有,连 Perl 官方都提供了接口,唯独缺 Lua,所以就想自己动手实现一个,并取名为 zklua,清明在实验室宅了两天把 zklua 的代码框架搭起来了,实现了部分 API,接下来就是填剩下的 API 了,争取利用四月份的空余时间写完,现在还幻想着写好 zklua(构建,文档,代码风格之类的细节)了以后能够回馈到Zookeeper社区,希望大家多提意见 ;-) 阅读全文

Google snappy 的 Lua 绑定

2013-03-30 23:54 by Haippy, 2073 阅读, 收藏, 编辑
摘要: 趁着周末有时间写了 Google snappy (A fast compressor/decompressor) 的 Lua 绑定,希望对 Lua 程序员有所帮助 ;-) 代码和文档依旧放在 github 上: lua-snappy (https://github.com/forhappy/lua-snappy) 阅读全文