关闭

谈谈我对Linux下“生产者/消费者线程模型”的理解

生产者消费者线程模型常常用于网络编程,即一个线程监听事件发生(生产者,例如产生“收到数据”事件),其他线程来处理事件(消费者,例如处理收到的数据)比较笨的办法是: 消费者线程不停地loop等待数据,当生产者线程发现收到数据时,找一个线程(先不讨论找线程的策略),把“收到数据”这一事件告诉消费者线程。消费者线程会在下一个loop对这个事件进行处理,处理完毕后,继续loop,直到下一个事件到来。但这么...
阅读(1321) 评论(0)

linux下由于线程局部存储未初始化导致加载动态链接库时程序崩溃的BUG

昨天碰到一个诡异的问题,第三方引擎给过来一个新的寻路库,z...
阅读(1487) 评论(0)

C/C++中volatile关键字详解

今天在修改XBase的ConnectionManager时,需要一个连接数组,但因为是多线程访问的,所以每个元素(是一个指针)都可能会发生变化。之前定义volatile一直没有一个系统的了解。这里找了一篇文章,感觉说的很全面 1. 为什么用volatile?     C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memor...
阅读(901) 评论(0)

无锁消息队列【好文转载】

原文地址:http://blog.codingnow.com/2012/06/dev_note_21.html 最近三周按计划在做第一里程碑的发布工作,几乎所有新特性都冻结了。大家都在改 bug 和完善细节。 服务器的性能还有不小的问题,压力测试的结果不能满意。原本我希望可以轻松实现 40 人对 40 人的战场。现在看起来在目前台式机上还有困难,虽然换上高配置的服务器可以达到,但会增加不少成本...
阅读(1727) 评论(0)

IOCP性能优化:使用环形缓冲提升IOCP效率(无锁缓冲)

最近在重构之前写的网络底层时,从各个方面认真考虑了每一个细节实现。其中,在提交I/O(WSASend/WSARecv)和I/O完成(GetQueuedCompletionStatus)时,难免出现一个缓冲区需要两个线程公用的问题。 假设主线程不断发送该消息,这些消息被堆叠在一个缓冲区里,定时使用WSASend提交发送I/O请求,在GetQueuedCompletionStatus返回后,...
阅读(4797) 评论(25)
    个人资料
    • 访问:357620次
    • 积分:3793
    • 等级:
    • 排名:第9349名
    • 原创:74篇
    • 转载:41篇
    • 译文:0篇
    • 评论:80条
    好站链接
    尤龙同学的代码与诗歌