08 2012 档案

摘要:线程和Asio线程安全一般来说,并发使用不同对象是安全的,但并发使用同一对象是不安全的。然而,诸如is_service类型提供了安全并发使用同一个对象的强保证。线程池多线程可以调用io_service::run()设置调用完成处理程序的线程池。这个方法也可以被用于io_service::post()以用一种方式执行任何分配给一个线程池的计算任务。需要注意的是所有加入is_service的池的线程被认为是平等的,并且io_service可以在它们之间以任意方式分发工作。内部线程特定平台的库实现可能使用了一个或更多的线程来模拟异步。这些线程必须尽可能的对库使用者不可见。特别的,线程: 一定不能直接 阅读全文
posted @ 2012-08-25 20:11 国超 阅读(408) 评论(0) 推荐(0) 编辑
摘要:前摄器(proactor)设计模式:没有线程的并发Asio库同时提供对同步和异步操作的支持。异步操作的支持基于前摄器设计模型。这种方法与同步或反应器方法对比的优缺点列在下面。前摄器和Asio不考虑平台相关细节,我们来检查一下前摄器设计模式在Asio中是如何实现的。前摄器设计模式Asynchronous Operation(异步操作)定义一个异步执行的操作,例如socket的异步读写。Asynchronous Operation Processor(异步操作处理器)执行异步操作,并在操作完成时将事件放入完成事件队列。从高层的观点看,stream_socket_service之类的服务是async 阅读全文
posted @ 2012-08-21 00:24 国超 阅读(609) 评论(0) 推荐(0) 编辑
摘要:基本Asio解剖Asio在I/O对象例如sockets上完成操作,即可是同步操作也可是异步操作。在开始使用Asio以前,了解Asio多个部分,你的程序,以及他们怎么一起工作的的概念图非常有用的。我们考虑当你在一个socket上执行一个连接操作时都发生了些什么作为一个引导的例子。我们可以通过考察同步操作开始。Your program(你的程序)会至少有一个io_service对象。io_service表示your program(你的程序)到operating system(操作系统)的I/O服务的纽带。asio::io_service io_service;要执行一个I/O操作,your pr 阅读全文
posted @ 2012-08-19 00:12 国超 阅读(879) 评论(0) 推荐(0) 编辑
摘要:Asio 是一个跨平台的C++库,用于网络和底层IO编程,以现代C++方式提供给开发者一个一致异步模型。概览原理大多数程序以某种方式与外部世界交互,不论它通过文件,网络,串行电缆,或者控制台。以网络为例,有时单独一次的I/O操作要花费很长时间才能完成。这对程序开发造成了特别的挑战。Asio提供了工具来管理这些长运行的操作,不需程序使用基于线程和眀锁的并发模型。Asio库是为用C++做系统编程的编程者们准备的,这里访问操作系统功能例如网络是频繁的。特别的,Asio定位以下目标:可移植性。库应该支持一系列常用的操作系统,并且在这些系统间提供一致的行为。可伸缩性。库应该方便扩展到数千并发连接的网络程 阅读全文
posted @ 2012-08-18 21:34 国超 阅读(956) 评论(0) 推荐(0) 编辑
摘要:终于还是在这里开始博客了。对微博是有一种抵触情绪的,对博客,不好说。其实我是一个有点懒的人。3月份,换了一个新公司,比较提倡博客分享想法,因为懒,一直没有理会。工作后,很多这样的现象。一个东西,研究了一下,当时觉得很明白了,中间间隔一段时间,再次回来的时候,发现全部都忘记了,又要重新思考一边。这时候,就有写点东西记录的欲望了。如果做了记录,重新回来的时候,就会节省很多的精力。当然如果这些不成熟的想法能够帮到别人,那就更是荣幸了。看了很多平台,感觉最喜欢的还是博客园。注册了以后,发现博客还要另外申请,我不高兴了,最讨厌的就是天朝的这些东西。我是一个愤青吧,或许只是半愤。我果断不申请,去其他平台看 阅读全文
posted @ 2012-08-18 17:16 国超 阅读(195) 评论(0) 推荐(0) 编辑