﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-网络服务器软件开发-随笔分类-boost</title><link>http://www.cppblog.com/true/category/3805.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 09 Dec 2010 21:25:23 GMT</lastBuildDate><pubDate>Thu, 09 Dec 2010 21:25:23 GMT</pubDate><ttl>60</ttl><item><title>boost的安装版本</title><link>http://www.cppblog.com/true/archive/2010/12/06/135572.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Mon, 06 Dec 2010 04:08:00 GMT</pubDate><guid>http://www.cppblog.com/true/archive/2010/12/06/135572.html</guid><wfw:comment>http://www.cppblog.com/true/comments/135572.html</wfw:comment><comments>http://www.cppblog.com/true/archive/2010/12/06/135572.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/true/comments/commentRss/135572.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/true/services/trackbacks/135572.html</trackback:ping><description><![CDATA[<a href="http://www.boostpro.com/download/">http://www.boostpro.com/download/</a><br>目前只有windows平台的，而且是32位
<img src ="http://www.cppblog.com/true/aggbug/135572.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/true/" target="_blank">true</a> 2010-12-06 12:08 <a href="http://www.cppblog.com/true/archive/2010/12/06/135572.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>很好的boost学习资料</title><link>http://www.cppblog.com/true/archive/2010/08/20/124057.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Fri, 20 Aug 2010 01:13:00 GMT</pubDate><guid>http://www.cppblog.com/true/archive/2010/08/20/124057.html</guid><wfw:comment>http://www.cppblog.com/true/comments/124057.html</wfw:comment><comments>http://www.cppblog.com/true/archive/2010/08/20/124057.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/true/comments/commentRss/124057.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/true/services/trackbacks/124057.html</trackback:ping><description><![CDATA[这是中文版：<br><a href="http://zh.highscore.de/cpp/boost/">http://zh.highscore.de/cpp/boost/</a> <br><a href="http://code.google.com/p/boost-doc-zh/">http://code.google.com/p/boost-doc-zh/</a>
<img src ="http://www.cppblog.com/true/aggbug/124057.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/true/" target="_blank">true</a> 2010-08-20 09:13 <a href="http://www.cppblog.com/true/archive/2010/08/20/124057.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>boost  interprocess之message queue</title><link>http://www.cppblog.com/true/archive/2008/07/31/57579.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Thu, 31 Jul 2008 00:58:00 GMT</pubDate><guid>http://www.cppblog.com/true/archive/2008/07/31/57579.html</guid><wfw:comment>http://www.cppblog.com/true/comments/57579.html</wfw:comment><comments>http://www.cppblog.com/true/archive/2008/07/31/57579.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/true/comments/commentRss/57579.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/true/services/trackbacks/57579.html</trackback:ping><description><![CDATA[<div class=c id=p_tpc>&nbsp;&nbsp; &nbsp; message queue亦即消息队列，在linux 下有msgsnd，msgrcv系列，在windows下有msmq，关于他们的相似及区别，请查阅相关资料，本文主要是简单介绍一下boost提供的解决方案，及其性能。<br>&nbsp;&nbsp; boost提供的message queue发送接口有send，try_send，timed_send，接收接口有receive，try_receive，timed_receive，其它接口有get_max_msg，get_max_msg_size，get_num_msg，remove。学习难度不高。下面测试一下send的发送速度：<br>&nbsp;&nbsp;&nbsp;&nbsp;测试代码：<br><br>#define BOOST_ALL_DYN_LINK <br>#include &lt;boost/interprocess/ipc/message_queue.hpp&gt;<br>#include &lt;boost/format.hpp&gt;<br>#include &lt;boost/progress.hpp&gt;<br>#include &lt;iostream&gt;<br>#include &lt;string&gt;<br>#include &lt;vector&gt;<br><br>using namespace boost;<br>using namespace boost::interprocess;<br><br>#define MAX_MSG_COUNT 50000<br>#define MAX_MSG_SIZE 1024<br><br>int main ()<br>{<br>try{<br>&nbsp;&nbsp;//Erase previous message queue<br>&nbsp;&nbsp;message_queue::remove("message_queue");<br><br>&nbsp;&nbsp;//Create a message_queue.<br>&nbsp;&nbsp;message_queue mq<br>&nbsp;&nbsp; (create_only&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //only create<br>&nbsp;&nbsp; ,"message_queue"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //name<br>&nbsp;&nbsp; ,MAX_MSG_COUNT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //max message number<br>&nbsp;&nbsp; ,MAX_MSG_SIZE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //max message size<br>&nbsp;&nbsp; );<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp; progress_timer pt;//记录时间，多方便！<br>&nbsp;&nbsp; <br>&nbsp;&nbsp; for(int i = 0; i &lt; 5000; ++i)//可灵活调整i的大小<br>&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;std::string msg = str(format("hello world %d") % i);<br>&nbsp;&nbsp;&nbsp;&nbsp;bool bRet = mq.send(msg.c_str(),msg.size(),0);&nbsp;&nbsp;<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp;} <br>&nbsp;&nbsp;<br>}<br><br>catch(interprocess_exception &amp;ex)<br>{<br>&nbsp;&nbsp;message_queue::remove("message_queue");<br>&nbsp;&nbsp;std::cout &lt;&lt; ex.what() &lt;&lt; std::endl;<br>&nbsp;&nbsp;return 1;<br>}<br>//message_queue::remove("message_queue");<br>return 0;<br>}<br><br>&nbsp;&nbsp;我的测试结果如下：<br>500&nbsp;&nbsp;&nbsp;&nbsp;0.16s<br>1000&nbsp;&nbsp; 0.41/0.50&nbsp;&nbsp;--&gt;表示测了2次，第一次0.41s，第二次0.50s，下同<br>5000条 5.88s/6.16<br>10000&nbsp;&nbsp;22.81s/22.34<br>20000&nbsp;&nbsp;87.92/91.22<br><br>&nbsp;&nbsp; 最后简单总结一下boost message queue：<br>&nbsp;&nbsp;优点：速度还不错，接口学习起来简单，方便易用<br>&nbsp;&nbsp;缺点：我在windows下测试，当一直在写队列时，用ctrl + c中断，然后用另一进程读读队列，读操作时阻塞。单步跟踪发现<br>&nbsp;&nbsp;是阻塞在interprocess_mutex::lock加锁的操作上，健壮程度远不如msgsnd，msgrcv系列，及msmq，该缺点比较致命。目前没有测试linux下的情况。<br></div>
<img src ="http://www.cppblog.com/true/aggbug/57579.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/true/" target="_blank">true</a> 2008-07-31 08:58 <a href="http://www.cppblog.com/true/archive/2008/07/31/57579.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Asio实现的实用echo server</title><link>http://www.cppblog.com/true/archive/2008/07/20/56678.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Sun, 20 Jul 2008 05:45:00 GMT</pubDate><guid>http://www.cppblog.com/true/archive/2008/07/20/56678.html</guid><wfw:comment>http://www.cppblog.com/true/comments/56678.html</wfw:comment><comments>http://www.cppblog.com/true/archive/2008/07/20/56678.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/true/comments/commentRss/56678.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/true/services/trackbacks/56678.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 关于echo的简单server，几乎多得发指，但大部分都没有提供类似粘包，定时器，安全退出等开发中的常用机制，换句话说，为了echo而echo，借鉴价值大打折扣，毕竟我们平时的工作不可能这么简单。这几天研究了下asio，感觉不错，boost接纳asio后，在服务器开发领域是不是该得到重视呢:)，还是贴代码吧，有注...&nbsp;&nbsp;<a href='http://www.cppblog.com/true/archive/2008/07/20/56678.html'>阅读全文</a><img src ="http://www.cppblog.com/true/aggbug/56678.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/true/" target="_blank">true</a> 2008-07-20 13:45 <a href="http://www.cppblog.com/true/archive/2008/07/20/56678.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怪异的boost，fatal error LNK1104: 无法打开文件“libboost_system-vc80-mt-gd-1_35.lib”</title><link>http://www.cppblog.com/true/archive/2008/07/16/56283.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Wed, 16 Jul 2008 05:19:00 GMT</pubDate><guid>http://www.cppblog.com/true/archive/2008/07/16/56283.html</guid><wfw:comment>http://www.cppblog.com/true/comments/56283.html</wfw:comment><comments>http://www.cppblog.com/true/archive/2008/07/16/56283.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.cppblog.com/true/comments/commentRss/56283.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/true/services/trackbacks/56283.html</trackback:ping><description><![CDATA[<p>#include &lt;iostream&gt;<br>#include &lt;boost/asio.hpp&gt;<br>#include &lt;boost/date_time/posix_time/posix_time.hpp&gt;</p>
<p>int main()<br>{<br>&nbsp;boost::asio::io_service io;</p>
<p>&nbsp;boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));<br>&nbsp;t.wait();</p>
<p>&nbsp;std::cout &lt;&lt; "Hello, world!\n";</p>
<p>&nbsp;return 0;<br>}<br></p>
上面是boost文档自带的代码，编译出现错误。代码是不需要链接libboost_system-vc80-mt-gd-1_35.lib，为什么还出现这样的错误呢？他默认连接？知道的，恢复一下：）
<img src ="http://www.cppblog.com/true/aggbug/56283.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/true/" target="_blank">true</a> 2008-07-16 13:19 <a href="http://www.cppblog.com/true/archive/2008/07/16/56283.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>boost 1-35编译</title><link>http://www.cppblog.com/true/archive/2008/07/12/55980.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Sat, 12 Jul 2008 14:01:00 GMT</pubDate><guid>http://www.cppblog.com/true/archive/2008/07/12/55980.html</guid><wfw:comment>http://www.cppblog.com/true/comments/55980.html</wfw:comment><comments>http://www.cppblog.com/true/archive/2008/07/12/55980.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/true/comments/commentRss/55980.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/true/services/trackbacks/55980.html</trackback:ping><description><![CDATA[编译bjam<br>1.点击 开始-&gt;程序-&gt;Microsoft Visual Studio 2005-&gt;Visual Studio Tools-&gt;Visual Studio 2005 命令提示<br>2.cd D:\Libs\boost_1_35_0\tools\jam\src<br>3.build.bat<br>&nbsp;此时在src\bin.ntx86\目录下产生了bjam.exe<br>4.将bjam.exe拷贝到boost的根目录D:\Libs\boost_1_35_0<br>5.cd D:\Libs\boost_1_35_0<br>6.bjam.exe --build-dir=build --toolset=msvc stage<br>&nbsp;<br>&nbsp;编译完成后，产生了2个目录build和stage，但同时也发现一个奇怪问题：stage里面的文件，竟然有<br>很多相同的lib，比如boost_date_time-vc80-mt-1_35.lib和boost_date_time-vc80-mt.lib，<br>&nbsp;&nbsp;&nbsp;&nbsp; boost_filesystem-vc80-mt-1_35.lib和boost_filesystem-vc80-mt.lib<br>他们文件的大小一样，只是文件名稍微不同，一个带有版本号，另一个没有。编译的问题，还是boost本身有<br>特殊含义？比较奇怪！ <br><br><br>2010-12-9日更新：VS2008编译boost 1.44<br>0。进入cmd窗口<br>1。解压到：D:\libs，得到根目录：D:\libs\boost_1_44_0<br>2。cd D:\libs\boost_1_44_0<br>3。bootstrap.bat<br>编译bjam，并将bjam.exe复制到当前目录,由于机器上装有VS2010，bjam是用VS2010编译完成的，这个和最终用什么编译boost无关<br>4。bjam.exe --build-dir=build --toolset=msvc-9.0 stage<br>默认为静态库编译方式，编译完成后，会产生build和stage目录。比较奇怪的是，会用到VS2010,如编译math时，初步查看可以确定，应该是类似配置方面的东西，并没有用2010编译出来的库。由于刚开始就出现vc10的字样，我一直以为是编译命令有问题，于是Crtl + C终端，然后阅读文档查找问题，多次试验无解，折腾了一天多，今晚偶然一次没有中断，最后又出现vc9.0的字样，等待编译完成后，才明白！
<img src ="http://www.cppblog.com/true/aggbug/55980.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/true/" target="_blank">true</a> 2008-07-12 22:01 <a href="http://www.cppblog.com/true/archive/2008/07/12/55980.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>