上一讲说到了protobuf有关的东西,各位看官记得下载源码,然后把google放进项目中,今天着重关注一下关于消息的hpp文件,直接上代码#ifndef RECEIVE_MESSAGE_HPP#define RECEIVE_MESSAGE_HPP#include #include #include...
分类:
其他好文 时间:
2014-11-12 21:03:50
阅读次数:
250
很多时候,我们以为采用了一种新技术(尤其是成熟的技术),过程应该是一马平川的。然而实际上,采用新技术的过程却是掉入了各种坑里。究其原因,或者是使用方式有问题,或者是效率的白白浪费。这一章,我想讲讲,我在使用Boost Asio进程网络编程时,所遇到的各种坑。
其一、CPU占用100%问题。
在没有采用异步编程之前,程序占用100%基本是不敢想象的事情,因为一旦程序占...
分类:
其他好文 时间:
2014-11-12 11:50:39
阅读次数:
300
异步服务端中的多线程
我在第4章 客户端和服务端展示的异步服务端是单线程的,所有的事情都发生在main()中:
int main() {
talk_to_client::ptr client = talk_to_client::new_();
acc.async_accept(client->sock(), boost::bind(handle_
accept,client,_1));
service.run();
}
异步的美妙之处就在于把单线程变为多线程的简单。你可...
分类:
编程语言 时间:
2014-11-11 10:50:49
阅读次数:
281
//// prioritised_handlers.cpp// ~~~~~~~~~~~~~~~~~~~~~~~~//// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com)//// Distribut...
分类:
其他好文 时间:
2014-11-10 17:39:01
阅读次数:
145
客户端应用中的异步I/O
主流程和同步客户端应用有点类似,不同的是Boost.Asio每次都位于async_read和async_write请求中间。...
分类:
编程语言 时间:
2014-11-10 09:58:20
阅读次数:
235
服务端应用中的同步I/O
类似客户端,服务端也被分为两种情况用来匹配之前章节中的情况1和情况2。同样,两种情况都采用“发送请求-读取结果”的策略。...
分类:
编程语言 时间:
2014-11-07 11:23:05
阅读次数:
216
同步VS异步
Boost.Asio的作者做了一个很惊艳的工作:它可以让你在同步和异步中自由选择,从而更好的适应你的应用。
在之前的章节中,我们学习了每种类型应用的框架,比如同步客户端,同步服务端,异步客户端,异步服务端。每一个你都可以作为你应用的基础。如果要更加深入地学习各种类型应用的细节,请继续。...
分类:
编程语言 时间:
2014-11-06 09:21:28
阅读次数:
216
异步服务端
这个图表是相当复杂的;从Boost.Asio出来你可以看到4个箭头指向on_accept,on_read,on_write和on_check_ping。着也就意味着你永远不知道哪个异步调用是下一个完成的调用,但是你可以确定的是它是这4个操作中的一个。...
分类:
编程语言 时间:
2014-11-05 10:56:52
阅读次数:
281
//// async_client.cpp// ~~~~~~~~~~~~~~~~//异步的HTTP客户端,与同步的非常类似。较不同的是最后一点同步循环的地方// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff do...
分类:
Web程序 时间:
2014-10-30 23:52:16
阅读次数:
446
//// sync_client.cpp// ~~~~~~~~~~~~~~~//HTTP客户端,同步// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com)//// Distributed under...
分类:
Web程序 时间:
2014-10-30 07:02:44
阅读次数:
255