<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.4" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>飞涛软件实验室</title>
	<link>http://www.18ie.com/wordpress</link>
	<description></description>
	<pubDate>Mon, 30 Aug 2010 02:06:20 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.4</generator>
	<language>en</language>
			<item>
		<title>瑶瑶7岁诗词选</title>
		<link>http://www.18ie.com/wordpress/?p=109</link>
		<comments>http://www.18ie.com/wordpress/?p=109#comments</comments>
		<pubDate>Mon, 30 Aug 2010 02:06:20 +0000</pubDate>
		<dc:creator>mft</dc:creator>
		
	<category>算法</category>
		<guid isPermaLink="false">http://www.18ie.com/wordpress/?p=109</guid>
		<description><![CDATA[瑶瑶7岁诗词选
早春梅
花开枝头几朵梅，
几树梅花度寒冬。
不知梅花何时开？
应在早春竟绽放!
(2009 七岁生日 于郑州 瑶瑶第1次写诗)
	夏荷
烈日炎炎荷花放，
亭亭玉立铺满塘。
笑忍酷暑独自开，
唯有莲藕淤泥藏。
2010 瑶瑶于郑州
	偶游紫薇
清清溪潭水，
处处花草香。
仰望蔚蓝天，
回首紫薇芳。
(2010 瑶瑶于张江紫薇公园	和老燕)
	如梦令
雨丝细如松叶，
塘中河水清澈。
枝头蝉声鸣，
碧岩如此清秀。
溪头，溪头，
多少鱼儿畅游。
(2010 于世纪公园 瑶瑶第1次填词 和李清照)
	如梦令
奇峰怪石依旧，
石鹤立水永久。
独坐孤亭旁，
望远碧柳青秀。
莲藕，莲藕，
深藏淤泥不露。
（2010 瑶瑶再游紫薇公园）
	南乡子
何处风景优，
满城秀色金山楼。
绿叶明年飞又去，
匆匆，
碧波荡漾天尽头。
夏韵美胜收，
且乘凉风亭边休。
古今多少佳作传，
回首，
楼台十里望瓜洲。
(2010 瑶瑶 于镇江金山寺  和辛弃疾)	
]]></description>
			<content:encoded><![CDATA[<p>瑶瑶7岁诗词选</p>
<p>早春梅<br />
花开枝头几朵梅，<br />
几树梅花度寒冬。<br />
不知梅花何时开？<br />
应在早春竟绽放!<br />
(2009 七岁生日 于郑州 瑶瑶第1次写诗)</p>
<p>	夏荷<br />
烈日炎炎荷花放，<br />
亭亭玉立铺满塘。<br />
笑忍酷暑独自开，<br />
唯有莲藕淤泥藏。<br />
2010 瑶瑶于郑州</p>
<p>	偶游紫薇<br />
清清溪潭水，<br />
处处花草香。<br />
仰望蔚蓝天，<br />
回首紫薇芳。<br />
(2010 瑶瑶于张江紫薇公园	和老燕)</p>
<p>	如梦令<br />
雨丝细如松叶，<br />
塘中河水清澈。<br />
枝头蝉声鸣，<br />
碧岩如此清秀。<br />
溪头，溪头，<br />
多少鱼儿畅游。<br />
(2010 于世纪公园 瑶瑶第1次填词 和李清照)</p>
<p>	如梦令<br />
奇峰怪石依旧，<br />
石鹤立水永久。<br />
独坐孤亭旁，<br />
望远碧柳青秀。<br />
莲藕，莲藕，<br />
深藏淤泥不露。<br />
（2010 瑶瑶再游紫薇公园）</p>
<p>	南乡子<br />
何处风景优，<br />
满城秀色金山楼。<br />
绿叶明年飞又去，<br />
匆匆，<br />
碧波荡漾天尽头。</p>
<p>夏韵美胜收，<br />
且乘凉风亭边休。<br />
古今多少佳作传，<br />
回首，<br />
楼台十里望瓜洲。</p>
<p>(2010 瑶瑶 于镇江金山寺  和辛弃疾)	</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.18ie.com/wordpress/?feed=rss2&amp;p=109</wfw:commentRSS>
		</item>
		<item>
		<title>念奴娇</title>
		<link>http://www.18ie.com/wordpress/?p=107</link>
		<comments>http://www.18ie.com/wordpress/?p=107#comments</comments>
		<pubDate>Sun, 11 Apr 2010 08:40:19 +0000</pubDate>
		<dc:creator>mft</dc:creator>
		
	<category>算法</category>
		<guid isPermaLink="false">http://www.18ie.com/wordpress/?p=107</guid>
		<description><![CDATA[念奴娇
	(2010) 马飞涛
	落英飞尽，
	仰天处， 慷慨悲歌尤现。
	妩媚青山，常惋忆，
	壮士马革血染。
	豪气穿空，
	挺身赴难，
	敢对千夫剑。
	阳关酒美，
	一杯沙场征战。

	长忆似水流年，
	梅花零落了，
	红飘香散。
	秋雨秋风，回首看，
	不见百娇千艳。
	寒夜窗烛，
	孤独应笑，
	我泪襟沾满。
	瑶琴弦断，
	一读青史还叹。
	出处：
		仰天：
			岳飞《满江红》: “仰天长啸，壮怀激烈”
		马革：
			东汉名将马援：“男儿要当死于边野，以马革裹尸还葬耳”
			龚自珍《已亥杂诗》：“青山处处埋忠骨，何须马革裹尸还”
		千夫：
			鲁迅《自嘲》：“横眉冷对千夫指，俯首甘为孺子牛”
		阳关：在今甘肃省敦煌西南
			王维 《渭城曲》：“劝君更尽一杯酒，西出阳关无故人”
		征战：
			王翰《凉州词》：“醉卧沙场君莫笑，古来征战几人回。”
		梅花：
			陆游《卜算子 咏梅》：“零落成泥碾作尘，只有香如故”
		秋雨秋风
			秋瑾： “一叶落而知秋深,秋风秋雨愁煞人”
		窗烛：
			李商隐《夜雨寄北》：“君问归期未有期，巴山夜雨涨秋池。何当共剪西窗烛，却话巴山夜雨时。”
          泪沾襟：
                       杜甫《蜀相》： “出师未捷身先死， 长使英雄泪满襟。” 
		瑶琴：
			岳飞《小重山》：“欲将心事付瑶琴，知音少，弦断有谁听”
]]></description>
			<content:encoded><![CDATA[<p>念奴娇</p>
<p>	(2010) 马飞涛</p>
<p>	落英飞尽，</p>
<p>	仰天处， 慷慨悲歌尤现。</p>
<p>	妩媚青山，常惋忆，</p>
<p>	壮士马革血染。</p>
<p>	豪气穿空，</p>
<p>	挺身赴难，</p>
<p>	敢对千夫剑。</p>
<p>	阳关酒美，</p>
<p>	一杯沙场征战。</p>
</p>
<p>	长忆似水流年，</p>
<p>	梅花零落了，</p>
<p>	红飘香散。</p>
<p>	秋雨秋风，回首看，</p>
<p>	不见百娇千艳。</p>
<p>	寒夜窗烛，</p>
<p>	孤独应笑，</p>
<p>	我泪襟沾满。</p>
<p>	瑶琴弦断，</p>
<p>	一读青史还叹。</p>
<p>	出处：</p>
<p>		仰天：<br />
			岳飞《满江红》: “仰天长啸，壮怀激烈”</p>
<p>		马革：<br />
			东汉名将马援：“男儿要当死于边野，以马革裹尸还葬耳”<br />
			龚自珍《已亥杂诗》：“青山处处埋忠骨，何须马革裹尸还”</p>
<p>		千夫：<br />
			鲁迅《自嘲》：“横眉冷对千夫指，俯首甘为孺子牛”</p>
<p>		阳关：在今甘肃省敦煌西南<br />
			王维 《渭城曲》：“劝君更尽一杯酒，西出阳关无故人”</p>
<p>		征战：<br />
			王翰《凉州词》：“醉卧沙场君莫笑，古来征战几人回。”</p>
<p>		梅花：<br />
			陆游《卜算子 咏梅》：“零落成泥碾作尘，只有香如故”</p>
<p>		秋雨秋风<br />
			秋瑾： “一叶落而知秋深,秋风秋雨愁煞人”</p>
<p>		窗烛：<br />
			李商隐《夜雨寄北》：“君问归期未有期，巴山夜雨涨秋池。何当共剪西窗烛，却话巴山夜雨时。”</p>
<p>          泪沾襟：<br />
                       杜甫《蜀相》： “出师未捷身先死， 长使英雄泪满襟。” </p>
<p>		瑶琴：<br />
			岳飞《小重山》：“欲将心事付瑶琴，知音少，弦断有谁听”</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.18ie.com/wordpress/?feed=rss2&amp;p=107</wfw:commentRSS>
		</item>
		<item>
		<title>管理倒置原则</title>
		<link>http://www.18ie.com/wordpress/?p=106</link>
		<comments>http://www.18ie.com/wordpress/?p=106#comments</comments>
		<pubDate>Fri, 05 Feb 2010 02:46:58 +0000</pubDate>
		<dc:creator>mft</dc:creator>
		
	<category>算法</category>
		<guid isPermaLink="false">http://www.18ie.com/wordpress/?p=106</guid>
		<description><![CDATA[昨天表伟同学主持了《软件随想录》的读书分享会，大家热烈讨论了各自对项目管理和招人的经验，
其中提到了X+Y理论, 术和道的区别。
今天早晨，我一个人静静地走在上班的小路上，经过沉思，发现昨天大家讨论的立足点都是错误的，
包括我自己。
我们根本就不应该有"管理"这个概念。应该把传统意义上的"管理"这个词汇从创新院人的思维里抠掉。
我总结一些新的心得，与大家分享。
项目管理之马氏原则：
	"管理倒置原则"， 即：
	 	项目成员自我管理，项目经理服务于大家；
角色定位：
	项目经理：
		不是管理者，
		而是：组织者+协调者+服务者+开发者；
	项目成员：
		不是被管理者，
		而是：自我管理者+参加者+决策者+开发者
心态调整：
	项目经理：
		一定要忘掉“管理”这个词
		一定要牢记“服务”这个词
		一定要拉低自己的身段，姿态放平或者更低
		无为而治
		上善若水
		海纳百川
	项目成员：
		一定要摆脱“被管理者”的心态
		一定要时刻提醒自己也是决策者一员，在集体决策时积极发言；
借用网络模型：
	项目经理类似于服务器
	项目成员类似于客户端，
		客户端可以自我管理，自己处理过载，自己重新启动
工作流程：
	1 开发进度：集体讨论并决策，制定里程碑和各个子节点
	2 任务分配：项目成员自己认领	
遇到问题：
	1 项目经理发现问题后，首先要扪心自省，先从自己身上找问题；
	2 开会集体讨论决策问题的解决方法	
团队建设之终极目标：
	王道乐土
	每个项目成员能感觉到：工作==娱乐
	(这句话不是我在唱高调，我确实在编程中能感受到类似于传说中吸毒之后的飘飘然的快乐，现在可能是毒瘾大了，快乐就少了，所以，我会找更难做的方向来开发)
	娱乐反倒是工作
	(我不吸烟不喝酒不玩游戏不打牌，现在开始玩玩“三国杀”和wii, 当成自己的"工作"来体验一下)
工作==娱乐的公司，无敌于天下！
想想google吧。
项目管理的最高境界应该是不管，管他干嘛？
是否我写的是“漫纸荒唐言”？ 欢迎大家拍砖，欢迎推墙。	
马飞涛
]]></description>
			<content:encoded><![CDATA[<p>昨天表伟同学主持了《软件随想录》的读书分享会，大家热烈讨论了各自对项目管理和招人的经验，<br />
其中提到了X+Y理论, 术和道的区别。</p>
<p>今天早晨，我一个人静静地走在上班的小路上，经过沉思，发现昨天大家讨论的立足点都是错误的，<br />
包括我自己。</p>
<p>我们根本就不应该有"管理"这个概念。应该把传统意义上的"管理"这个词汇从创新院人的思维里抠掉。</p>
<p>我总结一些新的心得，与大家分享。</p>
<p>项目管理之马氏原则：<br />
	"管理倒置原则"， 即：<br />
	 	项目成员自我管理，项目经理服务于大家；</p>
<p>角色定位：<br />
	项目经理：<br />
		不是管理者，<br />
		而是：组织者+协调者+服务者+开发者；</p>
<p>	项目成员：<br />
		不是被管理者，<br />
		而是：自我管理者+参加者+决策者+开发者</p>
<p>心态调整：<br />
	项目经理：<br />
		一定要忘掉“管理”这个词<br />
		一定要牢记“服务”这个词<br />
		一定要拉低自己的身段，姿态放平或者更低<br />
		无为而治<br />
		上善若水<br />
		海纳百川</p>
<p>	项目成员：<br />
		一定要摆脱“被管理者”的心态<br />
		一定要时刻提醒自己也是决策者一员，在集体决策时积极发言；</p>
<p>借用网络模型：<br />
	项目经理类似于服务器<br />
	项目成员类似于客户端，<br />
		客户端可以自我管理，自己处理过载，自己重新启动</p>
<p>工作流程：<br />
	1 开发进度：集体讨论并决策，制定里程碑和各个子节点<br />
	2 任务分配：项目成员自己认领	</p>
<p>遇到问题：<br />
	1 项目经理发现问题后，首先要扪心自省，先从自己身上找问题；<br />
	2 开会集体讨论决策问题的解决方法	</p>
<p>团队建设之终极目标：<br />
	王道乐土<br />
	每个项目成员能感觉到：工作==娱乐<br />
	(这句话不是我在唱高调，我确实在编程中能感受到类似于传说中吸毒之后的飘飘然的快乐，现在可能是毒瘾大了，快乐就少了，所以，我会找更难做的方向来开发)</p>
<p>	娱乐反倒是工作<br />
	(我不吸烟不喝酒不玩游戏不打牌，现在开始玩玩“三国杀”和wii, 当成自己的"工作"来体验一下)</p>
<p>工作==娱乐的公司，无敌于天下！<br />
想想google吧。</p>
<p>项目管理的最高境界应该是不管，管他干嘛？</p>
<p>是否我写的是“漫纸荒唐言”？ 欢迎大家拍砖，欢迎推墙。	</p>
<p>马飞涛</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.18ie.com/wordpress/?feed=rss2&amp;p=106</wfw:commentRSS>
		</item>
		<item>
		<title>asio fiber 异步实质，同步的写法</title>
		<link>http://www.18ie.com/wordpress/?p=105</link>
		<comments>http://www.18ie.com/wordpress/?p=105#comments</comments>
		<pubDate>Thu, 29 Oct 2009 09:33:05 +0000</pubDate>
		<dc:creator>mft</dc:creator>
		
	<category>算法</category>
		<guid isPermaLink="false">http://www.18ie.com/wordpress/?p=105</guid>
		<description><![CDATA[//mafeitao[at]gmail.com
// async_tcp_echo_server.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
#include "stdafx.h"
#include 
#include 
 #include 
#include 
#include < boost/date_time/posix_time/posix_time.hpp>
#include < windows.h>
using boost::asio::ip::tcp;
#include 
void * GetMainFiber(void)
{
static bool ini=false;
static void * mainFiber=NULL;
if(ini==false)
{
ini=true;
mainFiber= ConvertThreadToFiber(NULL);
}
assert(mainFiber !=NULL);
return mainFiber;
};
class CFiberSocket
{
private:
tcp::socket * pSocket_;
enum [...]]]></description>
			<content:encoded><![CDATA[<p>//mafeitao[at]gmail.com<br />
// async_tcp_echo_server.cpp<br />
// ~~~~~~~~~~~~~~~~~~~~~~~~~<br />
//<br />
// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)<br />
//<br />
// Distributed under the Boost Software License, Version 1.0. (See accompanying<br />
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)<br />
//</p>
<p>#include "stdafx.h"<br />
#include <span class="sc9"><</span><span class="sc9">iostream<span class="sc9">></span></span></p>
<p>#include <span class="sc9"><</span><span class="sc9">string<span class="sc9">></span></span></p>
<p><span class="sc9"> #include <span class="sc9"><</span><span class="sc9">boost/bind.hpp></span></span><span class="sc9"><br />
#include <span class="sc9"><</span><span class="sc9">boost/asio.hpp><br />
#include </span><span class="sc9">< </span><span class="sc9">boost/date_time/posix_time/posix_time.hpp><br />
#include </span><span class="sc9">< </span><span class="sc9">windows.h></span></span></p>
<p>using boost::asio::ip::tcp;</p>
<p>#include <span class="sc9"><</span><span class="sc9">windows.h<span class="sc9">></span></span><br />
void * GetMainFiber(void)<br />
{<br />
static bool ini=false;<br />
static void * mainFiber=NULL;</p>
<p>if(ini==false)<br />
{<br />
ini=true;<br />
mainFiber= ConvertThreadToFiber(NULL);<br />
}</p>
<p>assert(mainFiber !=NULL);<br />
return mainFiber;<br />
};</p>
<p>class CFiberSocket<br />
{<br />
private:<br />
tcp::socket * pSocket_;<br />
enum { max_length = 1024 };<br />
char data_[max_length];</p>
<p>bool ok_;<br />
int bytes_transferred_;<br />
void * meFiber_;</p>
<p>public:</p>
<p>CFiberSocket(tcp::socket * socket)<br />
:pSocket_(socket),<br />
ok_(false)<br />
{<br />
bytes_transferred_=0;<br />
meFiber_=::GetCurrentFiber();</p>
<p>};</p>
<p>~CFiberSocket(void)<br />
{<br />
pSocket_->close();<br />
delete pSocket_;<br />
::SwitchToFiber(GetMainFiber());</p>
<p>};</p>
<p>void close(void)<br />
{<br />
pSocket_->close();<br />
};</p>
<p>std::string read_some(int max_length, int timeout)<br />
{</p>
<p>pSocket_->async_read_some(boost::asio::buffer(data_, max_length),<br />
boost::bind(&#038;CFiberSocket::handle_read, this,<br />
boost::asio::placeholders::error,<br />
boost::asio::placeholders::bytes_transferred));</p>
<p>SwitchToFiber(GetMainFiber());</p>
<p>if(ok_)<br />
{<br />
std::string str(data_, bytes_transferred_);<br />
return str;<br />
}<br />
else<br />
return "";</p>
<p>};</p>
<p>void handle_read(const boost::system::error_code&#038; error,<br />
size_t bytes_transferred)<br />
{<br />
bytes_transferred_ =bytes_transferred;</p>
<p>if (!error)<br />
{<br />
//没有错误<br />
ok_=true;</p>
<p>}<br />
else<br />
{<br />
//有错误<br />
ok_=false;<br />
}<br />
SwitchToFiber(meFiber_);<br />
};</p>
<p>bool write(const char * buf, int size)<br />
{</p>
<p>boost::asio::async_write(*pSocket_,<br />
boost::asio::buffer(buf, size),<br />
boost::bind(&#038;CFiberSocket::handle_write, this,<br />
boost::asio::placeholders::error));</p>
<p>SwitchToFiber(GetMainFiber());</p>
<p>return ok_;</p>
<p>}</p>
<p>void handle_write(const boost::system::error_code&#038; error)<br />
{<br />
if (!error)<br />
{<br />
ok_=true;<br />
}<br />
else<br />
{<br />
ok_=false;<br />
}</p>
<p>SwitchToFiber(meFiber_);<br />
};<br />
};</p>
<p>//纤程内部，同步等待<br />
void WINAPI sessionProc(void * pSocket)<br />
{<br />
CFiberSocket socket( (tcp::socket *) pSocket);</p>
<p>std::string str;<br />
while(true)<br />
{<br />
str=socket.read_some(100,1);<br />
printf("%s\n", str.c_str());<br />
if(str.size()==0)<br />
{<br />
return;<br />
};</p>
<p>char buf[100];<br />
int * fiber=(int *) GetCurrentFiber();<br />
sprintf(buf,"[%x]\r\n",  fiber );<br />
str.append(buf);<br />
socket.write(str.c_str(), str.size());</p>
<p>};</p>
<p>};</p>
<p>class server<br />
{<br />
public:<br />
server(boost::asio::io_service&#038; io_service, short port)<br />
: io_service_(io_service),<br />
acceptor_(io_service, tcp::endpoint(tcp::v4(), port))<br />
{<br />
tcp::socket * pSocket = new tcp::socket(io_service_);</p>
<p>acceptor_.async_accept(*pSocket,<br />
boost::bind(&#038;server::handle_accept, this, pSocket,<br />
boost::asio::placeholders::error));<br />
}</p>
<p>void handle_accept(tcp::socket * pSocket,<br />
const boost::system::error_code&#038; error)<br />
{<br />
if (!error)<br />
{</p>
<p>void * me   = CreateFiber(4096, sessionProc, pSocket);<br />
::SwitchToFiber(me);</p>
<p>tcp::socket * pNewSocket = new tcp::socket(io_service_);</p>
<p>acceptor_.async_accept(*pNewSocket,<br />
boost::bind(&#038;server::handle_accept, this, pNewSocket,<br />
boost::asio::placeholders::error));<br />
}<br />
else<br />
{<br />
assert(true==false);<br />
}<br />
}</p>
<p>private:<br />
boost::asio::io_service&#038; io_service_;<br />
tcp::acceptor acceptor_;<br />
};</p>
<p>int main(int argc, char* argv[])<br />
{<br />
try<br />
{</p>
<p>char* pPort="1235";</p>
<p>if (argc != 2)<br />
{<br />
std::cerr << "Usage: echo_server</p>
<p>\n";}<br />
else<br />
{<br />
pPort=argv[1];<br />
}</p>
<p>boost::asio::io_service io_service;</p>
<p>GetMainFiber();</p>
<p>using namespace std; // For atoi.<br />
server s(io_service, atoi(pPort));</p>
<p>io_service.run();<br />
}<br />
catch (std::exception&#038; e)<br />
{<br />
std::cerr << "Exception: " << e.what() << "\n";<br />
}</p>
<p>return 0;<br />
}</p>
<p>asio fiber 例子， 把asio异步非阻塞的调用，借助fiber 纤程[协程]， 构造语法糖，包装为同步阻塞的写法。</p>
<p>注意这个函数<br />
//纤程内部，同步等待<br />
void WINAPI sessionProc(void * pSocket)</p>
<p>函数里面是阻塞调用的写法，但是通过纤程跳到主纤程里面，在主纤程的回调函数里，又跳回到该会话的纤程。</p>
<p>客户端一个连接，对应于服务器端的一个socket, 每个socket新开一个纤程， 每个线程是一个会话，纤程sessionProc里收发是同步的写法。<br />
有时间再把异步accept包装为同步写法，为linux也做一个asio + 纤程的版本
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.18ie.com/wordpress/?feed=rss2&amp;p=105</wfw:commentRSS>
		</item>
		<item>
		<title>Asio+fiber</title>
		<link>http://www.18ie.com/wordpress/?p=104</link>
		<comments>http://www.18ie.com/wordpress/?p=104#comments</comments>
		<pubDate>Tue, 27 Oct 2009 10:28:56 +0000</pubDate>
		<dc:creator>mft</dc:creator>
		
	<category>算法</category>
		<guid isPermaLink="false">http://www.18ie.com/wordpress/?p=104</guid>
		<description><![CDATA[


  
以下是一个asio和fiber结合的最简单的小例子。
Asio+fiber+单线程的内存池, 效率无敌,纤程内部，同步等待，写法优美。
// test_timer.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include 
#include 
#include < boost/date_time/posix_time/posix_time.hpp>
#include < windows.h>
void *fiber_context[2];
void print(const boost::system::error_code&#038; /*e*/)
{
std::cout ]]></description>
			<content:encoded><![CDATA[<p><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="ProgId" content="Word.Document" /><meta name="Generator" content="Microsoft Word 12" /><meta name="Originator" content="Microsoft Word 12" /></p>
<link rel="File-List" />
<link rel="themeData" />
<link rel="colorSchemeMapping" /><!--[if gte mso 9]><xml>  <w:WordDocument>   <w:View>Normal</w:View>   <w:Zoom>0</w:Zoom>   <w:TrackMoves/>   <w:TrackFormatting/>   <w:PunctuationKerning/>   <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>   <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>   <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>   <w:ValidateAgainstSchemas/>   <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>   <w:IgnoreMixedContent>false</w:IgnoreMixedContent>   <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>   <w:DoNotPromoteQF/>   <w:LidThemeOther>EN-US</w:LidThemeOther>   <w:LidThemeAsian>ZH-CN</w:LidThemeAsian>   <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>   <w:Compatibility>    <w:SpaceForUL/>    <w:BalanceSingleByteDoubleByteWidth/>    <w:DoNotLeaveBackslashAlone/>    <w:ULTrailSpace/>    <w:DoNotExpandShiftReturn/>    <w:AdjustLineHeightInTable/>    <w:BreakWrappedTables/>    <w:SnapToGridInCell/>    <w:WrapTextWithPunct/>    <w:UseAsianBreakRules/>    <w:DontGrowAutofit/>    <w:SplitPgBreakAndParaMark/>    <w:DontVertAlignCellWithSp/>    <w:DontBreakConstrainedForcedTables/>    <w:DontVertAlignInTxbx/>    <w:Word11KerningPairs/>    <w:CachedColBalance/>    <w:UseFELayout/>   </w:Compatibility>   <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>   <m:mathPr>    <m:mathFont m:val="Cambria Math"/>    <m:brkBin m:val="before"/>    <m:brkBinSub m:val="&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;#45;-"/>    <m:smallFrac m:val="off"/>    <m:dispDef/>    <m:lMargin m:val="0"/>    <m:rMargin m:val="0"/>    <m:defJc m:val="centerGroup"/>    <m:wrapIndent m:val="1440"/>    <m:intLim m:val="subSup"/>    <m:naryLim m:val="undOvr"/>   </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml>  <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267">   <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal"/>   <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>   <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>   <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>   <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>   <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>   <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>   <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>   <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>   <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>   <w:LsdException Locked="false" Priority="39" Name="toc 1"/>   <w:LsdException Locked="false" Priority="39" Name="toc 2"/>   <w:LsdException Locked="false" Priority="39" Name="toc 3"/>   <w:LsdException Locked="false" Priority="39" Name="toc 4"/>   <w:LsdException Locked="false" Priority="39" Name="toc 5"/>   <w:LsdException Locked="false" Priority="39" Name="toc 6"/>   <w:LsdException Locked="false" Priority="39" Name="toc 7"/>   <w:LsdException Locked="false" Priority="39" Name="toc 8"/>   <w:LsdException Locked="false" Priority="39" Name="toc 9"/>   <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>   <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title"/>   <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>   <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>   <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong"/>   <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>   <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid"/>   <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>   <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>   <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading"/>   <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List"/>   <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid"/>   <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1"/>   <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2"/>   <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1"/>   <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2"/>   <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1"/>   <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2"/>   <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3"/>   <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List"/>   <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading"/>   <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List"/>   <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid"/>   <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1"/>   <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1"/>   <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1"/>   <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>   <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>   <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>   <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>   <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>   <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote"/>   <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>   <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>   <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>   <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>   <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>   <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1"/>   <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>   <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1"/>   <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>   <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2"/>   <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2"/>   <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2"/>   <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>   <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>   <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>   <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>   <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>   <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>   <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>   <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2"/>   <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>   <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2"/>   <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>   <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3"/>   <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3"/>   <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3"/>   <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>   <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>   <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>   <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>   <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>   <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>   <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>   <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3"/>   <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>   <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3"/>   <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>   <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4"/>   <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4"/>   <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4"/>   <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>   <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>   <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>   <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>   <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>   <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>   <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>   <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4"/>   <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>   <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4"/>   <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>   <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5"/>   <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5"/>   <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5"/>   <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>   <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>   <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>   <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>   <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>   <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>   <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>   <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5"/>   <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>   <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5"/>   <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>   <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6"/>   <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6"/>   <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6"/>   <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>   <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>   <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>   <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>   <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>   <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>   <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>   <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6"/>   <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>   <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6"/>   <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>   <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>   <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>   <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>   <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>   <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>   <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>   <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>  </w:LatentStyles> </xml><![endif]--><style> <!--  /* Font Definitions */  @font-face 	{font-family:宋体; 	panose-1:2 1 6 0 3 1 1 1 1 1; 	mso-font-alt:SimSun; 	mso-font-charset:134; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:3 135135232 16 0 262145 0;} @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;} @font-face 	{font-family:"\@宋体"; 	panose-1:2 1 6 0 3 1 1 1 1 1; 	mso-font-charset:134; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:3 135135232 16 0 262145 0;} @font-face 	{font-family:新宋体; 	panose-1:2 1 6 9 3 1 1 1 1 1; 	mso-font-charset:134; 	mso-generic-font-family:modern; 	mso-font-pitch:fixed; 	mso-font-signature:3 135135232 16 0 262145 0;} @font-face 	{font-family:"\@新宋体"; 	panose-1:2 1 6 9 3 1 1 1 1 1; 	mso-font-charset:134; 	mso-generic-font-family:modern; 	mso-font-pitch:fixed; 	mso-font-signature:3 135135232 16 0 262145 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin:0cm; 	margin-bottom:.0001pt; 	text-align:justify; 	text-justify:inter-ideograph; 	mso-pagination:widow-orphan; 	font-size:10.5pt; 	font-family:"Calibri","sans-serif"; 	mso-fareast-font-family:宋体; 	mso-bidi-font-family:宋体;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-size:10.0pt; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt; 	mso-ascii-font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman"; 	mso-hansi-font-family:"Times New Roman"; 	mso-font-kerning:0pt;}  /* Page Definitions */  @page 	{mso-page-border-surround-header:no; 	mso-page-border-surround-footer:no;} @page Section1 	{size:612.0pt 792.0pt; 	margin:72.0pt 90.0pt 72.0pt 90.0pt; 	mso-header-margin:36.0pt; 	mso-footer-margin:36.0pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --> </style><!--[if gte mso 10]> <style>  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:普通表格; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.5pt; 	mso-bidi-font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:宋体; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	mso-font-kerning:1.0pt;} </style> <![endif]--><br />
<p align="left" class="MsoNormal" style="text-align: left"><span style="font-size: 10pt; font-family: 新宋体; color: blue">以下是一个<span lang="EN-US">asio</span>和<span lang="EN-US">fiber</span>结合的最简单的小例子。<span lang="EN-US" /></span></p>
<p align="left" class="MsoNormal" style="text-align: left"><span lang="EN-US" style="font-size: 10pt; font-family: 新宋体; color: blue">Asio+fiber+</span><span style="font-size: 10pt; font-family: 新宋体; color: blue">单线程的内存池<span lang="EN-US">, 效率</span>无敌,</span>纤程内部，同步等待，<span style="font-size: 10pt; font-family: 新宋体; color: blue">写法优美。<span lang="EN-US" /></span></p>
<p><span class="sc9">// test_timer.cpp : Defines the entry point for the console application.<br />
//</span></p>
<p>#include "stdafx.h"<br />
#include <span class="sc9"><</span><span class="sc9" />iostream<span class="sc9">></span><br />
#include <span class="sc9"><</span><span class="sc9">boost/asio.hpp><br />
#include </span><span class="sc9">< </span><span class="sc9">boost/date_time/posix_time/posix_time.hpp><br />
#include </span><span class="sc9">< </span><span class="sc9">windows.h></span></p>
<p>void *fiber_context[2];</p>
<p>void print(const boost::system::error_code&#038; /*e*/)<br />
{<br />
std::cout << "Hello, world!\n";<br />
}</p>
<p>boost::asio::io_service io;<br />
void WINAPI fiberProc(void *fiber_nbr);<br />
void callback(const boost::system::error_code&#038; /*e*/);</p>
<p>void wait(int second)<br />
{</p>
<p>boost::asio::deadline_timer t(io, boost::posix_time::seconds(second));<br />
t.async_wait(callback);<br />
SwitchToFiber(fiber_context[0]);</p>
<p>};</p>
<p>void callback(const boost::system::error_code&#038; /*e*/)<br />
{<br />
std::cout << "callback!\n";<br />
SwitchToFiber(fiber_context[1]);<br />
};</p>
<p>//纤程内部，同步等待<br />
void WINAPI fiberProc(void *fiber_nbr)</p>
<p>{<br />
wait(1);<br />
printf("step1\n\n");</p>
<p>wait(1);<br />
printf("step2\n\n");</p>
<p>wait(1);<br />
printf("step3\n\n");</p>
<p>wait(1);<br />
printf("step4\n\n");</p>
<p>SwitchToFiber(fiber_context[0]);</p>
<p>}</p>
<p>int main()<br />
{<br />
fiber_context[0] = ConvertThreadToFiber(NULL);<br />
fiber_context[1] = CreateFiber(4096, fiberProc,0);</p>
<p>boost::asio::deadline_timer tLong(io, boost::posix_time::seconds(8));<br />
tLong.async_wait(print);</p>
<p>SwitchToFiber(fiber_context[1]);</p>
<p>io.run();</p>
<p>return 0;<br />
}
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.18ie.com/wordpress/?feed=rss2&amp;p=104</wfw:commentRSS>
		</item>
	</channel>
</rss>
