摘要:
Boost asio 的socket的异步非阻塞模式才有的是proactor模式,当IO操作介绍后回调相应的处理函数。ASIO在Linux平台下的实现基于epoll,但是epoll只支持reactor模式,ASIO通过封装在epoll上实现了proactor。提到ASIO proactor,ASIO中的所有异步操作都是基于io_service实现的,io_service是ASIO中的任务队列,并且他负责调用epoll_wait等待IO事件到来 阅读全文
摘要:
io_servie 实现了一个任务队列,这里的任务就是void(void)的函数。Io_servie最常用的两个接口是post和run,post向任务队列中投递任务,run是执行队列中的任务,直到全部执行完毕,并且run可以被N个线程调用。Io_service是完全线程安全的队列 阅读全文
摘要:
域驱动设计是一种思维方式,目的在于处理具有复杂问题的软件项目。在传统的瀑布软件开发模型中,经历需求分析、设计、开发、测试、交付等阶段,但是问题在于需求从业务方传递到开发团队的时候并不是很顺畅。尽管需求阶段整理了复杂详细的需求文档,设计阶段也产出了详细设计文档,但是开发者由于很少参与了问题域的分析和建模,他们对设计文档的理解往往是片面的,有时甚至会推翻设计文档的模型创作一些临时解决方案,而且往往这时都会有冠冕堂皇的理由---性能。许多设计文档自书写之日起就被束之高阁,我的一个同事L说我们的文档修改日期永远只是创建日期,因为设计文档的更新远远跟不上代码的更新,有时候并不是说逻辑变动多么多么大,只是更新设计文档有时居然比更新代码成本还要高!这种现象在我的项目中屡见不鲜,我越来越意识到设计和开发脱节的危险。 阅读全文
摘要:
实现一个状态机很容易,但是实现一个好的状态机却不简单 阅读全文
摘要:
future的原理是当你申请资源(计算资源或I/O资源)时,立即返回一个虚拟的资源句柄,当真正使用的时候,再将虚拟的句柄转化成真正的资源,相当于预获取。 阅读全文