《Linux多线程服务端编程——使用muduo C++网络库》读书笔记

第一章 线程安全的对象生命期管理

第二章 线程同步精要

第三章 多线程服务器的适用场合与常用编程模型

第四章 C++多线程系统编程精要

1.(P84)11个常用的最基本Pthreads函数:

2个:线程的创建和等待结束(join)。封装为muduo::Thread
4个:mutex的创建、销毁、加锁、解锁。封装为muduo::MutexLock
5个:条件变量的创建、销毁、等待、通知、广播。muduo::Condition

2.(P85)不推荐使用读写锁的原因是它往往造成提高性能的错觉(允许多个线程并发读),实际上在很多情况下,与使用最简单的mutex相比,它实际上降低了性能。

3.(P85)从理论上讲,如果没有合适的内存模型,编写正确的多线程程序属于撞大运行为,见Hans-J.Boehm的论文《Threads Cannot be Implemented as a Library》:

http://www.hpl.hp.com/techreports/2004/HPL-2004-209.pdf

4.(P86)我们不必担心系统调用的线程安全性,因为系统调用对于用户态程序来说是原子的。但是要注意系统调用对于内核状态的改变可能影响其他线程。

5.(P86)POSIX标准列出了一份线程安全的黑名单,在这份黑名单中,system、getenv/putenv/setenv等函数都是不安全的。

http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_09