08 2012 档案

boost.asio的一点备忘 <转>
摘要:这两天事情不多,简单看了下boost.asio的源码,因为asio采用proactor模式,而windows下的IOCP本身就是这个模式的体现,所以将精力集中在了asio在linux下的实现(asio在windows下采用了IOCP,linux下用epoll,还有其它的一些实现如kqueue,select等).在高性能服务器并发模型设计中,Reactor和Proactor是两个经常用到的设计模式,前者用于同步IO,后者用于异步IO,前者在IO操作就绪的情况下通知用户,用户再采取实际的IO操作,后者是在IO操作完成后通知用户,举个简单的例子,比如说你有一封信到了邮局,Reactor模式就是邮局的 阅读全文

posted @ 2012-08-10 11:27 110440 阅读(1176) 评论(0) 推荐(0) 编辑

boost.asio的跨平台实现 <转>
摘要:前几天写了篇日志<<关于boost.asio的一点备忘>>,主要是基于其在linux平台下的实现写的,今天还是一篇备忘,根据boost.asio在win与非win下的实现来谈谈它的跨平台设计与实现.boost.asio根据系统平台提供的事件多路分发机制来实现proactor模式,实现的差异化主要体现在支持IOCP机制与支持其它分发机制,下面就基于boost.asio在win系统(支持IOCP)与linux系统(支持epoll)下的实现来谈谈它的跨平台设计,非win系统的差异化主要表现在对reactor(系统提供的IO事件多路分发机制,如epoll,kqueue等)的封装 阅读全文

posted @ 2012-08-10 11:27 110440 阅读(1937) 评论(0) 推荐(0) 编辑

boost::condition_variable 设计c++ 生产者消费者队列
摘要:boost::condition_variable 用法:当线程间的共享数据发生变化的时候,可以通过condition_variable来通知其他的线程。消费者wait 直到生产者通知其状态发生改变,Condition_variable是使用方法如下:·当持有锁之后,线程调用wait·wait解开持有的互斥锁(mutex),阻塞本线程,并将自己加入到唤醒队列中·当收到通知(notification),该线程从阻塞中恢复,并加入互斥锁队列(mutex queue)线程被唤醒之后继续持有锁运行。以下一个例子转自:http://www.justsoftwaresolut 阅读全文

posted @ 2012-08-09 11:11 110440 阅读(10562) 评论(0) 推荐(0) 编辑

导航