陈硕的 Blog

吾尝终日而思矣,不如须臾之所学也。吾尝跂而望矣,不如登高之博见也。……君子生非异也,善假于物也。

02 2010 档案

多线程服务器的适用场合
摘要:多线程的适用场景是:提高响应速度,让 IO 和“计算”相互重叠,降低 latency。 虽然多线程不能提高绝对性能,但能提高平均响应性能。 在多核时代,多线程编程是不可避免的,“鸵鸟算法”不是办法。 阅读全文

posted @ 2010-02-28 21:32 陈硕 阅读(7985) 评论(5) 推荐(8) 编辑

Linux 新增系统调用的启示
摘要:最近无意中注意到了 Linux 新增的几个系统调用的对编写服务器代码的影响。 1. 服务器程序的风格可能在变: 新的创建文件描述符的 syscall 一般都可以直接指定 O_NONBLOCK 和 FD_CLOEXEC,或许能反映当前 Linux (服务端)开发的风向,那就是我在前一篇博客《多线程服务器的常用编程模型》里推荐的 one loop per thread + (non-blocking IO with IO multiplexing)。 阅读全文

posted @ 2010-02-26 02:51 陈硕 阅读(6475) 评论(0) 推荐(3) 编辑

多线程服务器的常用编程模型
摘要:本文主要讲我个人在多线程开发方面的一些粗浅经验。总结了一两种常用的线程模型,归纳了进程间通讯与线程同步的最佳实践,以期用简单规范的方式开发多线程程序。万字长文,慎入,有 PDF 版下载: http://files.cppblog.com/Solstice/multithreaded_server.pdf 阅读全文

posted @ 2010-02-12 17:00 陈硕 阅读(22939) 评论(14) 推荐(11) 编辑

当析构函数遇到多线程 ── C++ 中线程安全的对象回调
摘要:编写线程安全的类不是难事,用同步原语保护内部状态即可。但是对象的生与死不能由对象自身拥有的互斥器来保护。如何保证即将析构对象 x 的时候,不会有另一个线程正在调用 x 的成员函数?或者说,如何保证在执行 x 的成员函数期间,对象 x 不会在另一个线程被析构?如何避免这种竞态条件是 C++ 多线程编程面临的基本问题,可以借助 boost 的 shared_ptr 和 weak_ptr 完美解决。这也是实现线程安全的 Observer 模式的必备技术。全文 1 万 2 千余字,有 PDF 版下载: http://www.cppblog.com/Files/Solstice/dtor_meets_mt.pdf 阅读全文

posted @ 2010-02-10 08:22 陈硕 阅读(18943) 评论(3) 推荐(5) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示