boostasio编译
A. 如何在XCode中配置Boost库
1. 下载boost.sh安装脚本,这里选择的是payco的安装脚本, ,最简单好用。
2. 打开终端,su成root,命令为 sudo su,输入密码即可
3. 清理掉所有之前安装的配置,尤其是在用户目录下的user-config.jam,必须删除掉,之前安装的文件也一并删除掉,免得影响。(本人就是没清理之前的配置,导致一直编译不通过)
4. 把boost.sh 拷贝到/usr/local 下,运行之,会自动下载,解压,配置,编译boost。
5. 等待编译安装完毕后,显示 Completed successfully,boost库即安装完毕
完成了一半,剩余的工作就是配置xcode5,其他版本的xcode也是大同小异,没有什么区别的。
6. 在xcode下的target-》Building setting-> Linking-> Other Linker Flags中,添加 -lboost_system -lboost_thread,这两项(常用的功能都包含在这2个库中,还有其他要使用的功能,都在这里添加库文件)
7. 在在xcode下的target-》Building setting->Search Path s 中,Header Search Path 添加/usr/local/ios/prefix/include
8. 在在xcode下的target-》Building setting->Search Paths 中,Library Search Path 添加/usr/local/ios/prefix/lib(这是给真机用的,包含arm6,arm7,arm7s等),以及/usr/local/ios/build/i386(这是给模拟器用的),基本都在一个位置上,截取一张图好了
添加完毕之后,测试一下编译是否成功。
在任意一个cpp文件内,添加
#include "boost/swap.hpp"
#include "boost/asio.hpp"
编译无报错,则顺利完成boost库在xcode5下的IOS使用编译:)
。
B. 如何在XCode中配置Boost库
话说boost在xcode5上的安装确实很费劲,参考实验了相当数量的文章后,终于成功在IOS模拟器上跑通了boost库,废话少说,上步骤
1. 下载boost.sh安装脚本,这里选择的是payco的安装脚本,https://gist.github.com/payco/6880661 ,最简单好用。也可以在csdn上我的代码中下载,https://code.csdn.net/snippets/68017.git
2. 打开终端,su成root,命令为 sudo su,输入密码即可
3. 清理掉所有之前安装的配置,尤其是在用户目录下的user-config.jam,必须删除掉,之前安装的文件也一并删除掉,免得影响。(本人就是没清理之前的配置,导致一直编译不通过)
4. 把boost.sh 拷贝到/usr/local 下,运行之,会自动下载,解压,配置,编译boost。
5. 等待编译安装完毕后,显示 Completed successfully,boost库即安装完毕
完成了一半,剩余的工作就是配置xcode5,其他版本的xcode也是大同小异,没有什么区别的。
6. 在xcode下的target-》Building setting-> Linking-> Other Linker Flags中,添加 -lboost_system -lboost_thread,这两项(常用的功能都包含在这2个库中,还有其他要使用的功能,都在这里添加库文件)
7. 在在xcode下的target-》Building setting->Search Path s 中,Header Search Path 添加/usr/local/ios/prefix/include
8. 在在xcode下的target-》Building setting->Search Paths 中,Library Search Path 添加/usr/local/ios/prefix/lib(这是给真机用的,包含arm6,arm7,arm7s等),以及/usr/local/ios/build/i386(这是给模拟器用的),基本都在一个位置上,截取一张图好了
添加完毕之后,测试一下编译是否成功。
在任意一个cpp文件内,添加
#include "boost/swap.hpp"
#include "boost/asio.hpp"
编译无报错,则顺利完成boost库在xcode5下的IOS使用编译:)
。
C. linux下eclipse使用boost asio进行网络开发
linux下boost asio并行开发:
1.三种使用方式
1)single thread && single io_service, 最简单, 性能最一般
2)multithread && single io_service
3)io_service per thread. multi io_service.
这三个性能是依次递增的。
2.在使用ASIO时,io_servie应该尽量多,这样可以使其epoll_wait占用的时间片最多,这样可以最大限度的响应IO事件,降低响应时延。但是每个io_servie::run占用一个线程,所以io_servie最佳应该和CPU的核数相同。
3.io_service是一个工作队列的模型。在使用过程中一般有如下几个需要注意的地方:
run函数在io事件完成后会退出,导致后续基于该对象的异步io任务无法执行。
由于io_service并不会主动常见调度线程,需要我们手动分配,常见的方式是给其分配一个线程,然后执行run函数。但run函数在io事件完成后会退出,线程会终止,后续基于该对象的异步io任务无法得到调度。
解决这个问题的方法是通过一个asio::io_service::work对象来守护io_service。这样,即使所有io任务都执行完成,也不会退出,继续等待新的io任务。
boost::asio::io_service io;
boost::asio::io_service::work work(io);
io.run();