﻿<?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++博客-一动不如一静</title><link>http://www.cppblog.com/lijialian/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 05 Apr 2026 15:28:25 GMT</lastBuildDate><pubDate>Sun, 05 Apr 2026 15:28:25 GMT</pubDate><ttl>60</ttl><item><title> 汇编语言入门</title><link>http://www.cppblog.com/lijialian/archive/2008/02/23/43130.html</link><dc:creator>一动不如一静</dc:creator><author>一动不如一静</author><pubDate>Sat, 23 Feb 2008 10:10:00 GMT</pubDate><guid>http://www.cppblog.com/lijialian/archive/2008/02/23/43130.html</guid><wfw:comment>http://www.cppblog.com/lijialian/comments/43130.html</wfw:comment><comments>http://www.cppblog.com/lijialian/archive/2008/02/23/43130.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lijialian/comments/commentRss/43130.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lijialian/services/trackbacks/43130.html</trackback:ping><description><![CDATA[<p><a href="http://www.microsoft.com/msj/0298/hood0298.aspx">http://www.microsoft.com/msj/0298/hood0298.aspx</a></p>
<img src ="http://www.cppblog.com/lijialian/aggbug/43130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lijialian/" target="_blank">一动不如一静</a> 2008-02-23 18:10 <a href="http://www.cppblog.com/lijialian/archive/2008/02/23/43130.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>  如何根据crash地址找到对应的行号</title><link>http://www.cppblog.com/lijialian/archive/2007/05/03/23360.html</link><dc:creator>一动不如一静</dc:creator><author>一动不如一静</author><pubDate>Thu, 03 May 2007 02:44:00 GMT</pubDate><guid>http://www.cppblog.com/lijialian/archive/2007/05/03/23360.html</guid><wfw:comment>http://www.cppblog.com/lijialian/comments/23360.html</wfw:comment><comments>http://www.cppblog.com/lijialian/archive/2007/05/03/23360.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/lijialian/comments/commentRss/23360.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lijialian/services/trackbacks/23360.html</trackback:ping><description><![CDATA[<p>有时候我们的程序crash了，会出现一个crash界面提示我们在什么位置中断了。我们如何根据这个中断地址找到对应的行号呢？</p>
<p>要想达到这样的目的，首先要进行一些工程属性的配置。</p>
<p>c/c++-&gt;常规-&gt;调试信息格式-&gt;程序数据库<br>c/c++-&gt;优化-&gt;优化-&gt;禁用<br>链接器-&gt;调试-&gt;生成调试信息-&gt;是<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;生成映射文件-&gt;是<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;映射文件名称-&gt;$(OutDir)/$(ProjectName).map<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;映射导出-&gt;是<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&gt;映射行-&gt;是</p>
<p>1&nbsp;&nbsp;&nbsp; int main (int argc, char* argv[])<br>2&nbsp;&nbsp; {<br>3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char * p = 0;<br>4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *p = 'c';<br>5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>6 }</p>
<p>当执行程序的时候，显示&#8220;test1.exe中的0x0040100e处未处理的异常：0xc000005:写入位置0x00000000时发生访问冲突&#8221;</p>
<p><br>这个时候来看一下map文件。首先看到的是参考的加载地址： Preferred load address is 00400000</p>
<p>Timestamp is 4639462c (Thu May 03 10:17:16 2007)</p>
<p style="color: red;">&nbsp;Preferred load address is 00400000</p>
<p>&nbsp;Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Length&nbsp;&nbsp;&nbsp;&nbsp; Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class<br>&nbsp;0001:00000000 00003b58H .text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CODE<br>&nbsp;0002:00000000 000000c4H .idata$5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0002:000000d0 00000c40H .rdata&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0002:00000d10 00000048H .rdata$debug&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0002:00000d60 00000008H .rdata$sxdata&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0002:00000d68 00000004H .rtc$IAA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0002:00000d6c 00000004H .rtc$IZZ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0002:00000d70 00000004H .rtc$TAA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0002:00000d74 00000004H .rtc$TZZ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0002:00000d78 00000014H .idata$2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0002:00000d8c 00000014H .idata$3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0002:00000da0 000000c4H .idata$4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0002:00000e64 00000366H .idata$6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0002:000011ca 00000000H .edata&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0003:00000000 00000004H .CRT$XCA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0003:00000004 00000004H .CRT$XCAA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0003:00000008 00000004H .CRT$XCZ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0003:0000000c 00000004H .CRT$XIA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0003:00000010 00000008H .CRT$XIC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0003:00000018 00000004H .CRT$XIZ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0003:0000001c 00000004H .CRT$XPA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0003:00000020 00000004H .CRT$XPZ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0003:00000024 00000004H .CRT$XTA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0003:00000028 00000004H .CRT$XTZ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0003:00000030 00000274H .data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA<br>&nbsp;0003:000002c0 00000598H .bss&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA</p>
<p>crash地址计算：calculation: crash_address - preferred_load_address - 0x1000<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x0040100e -0x00400000-0x1000=0x0000000e</p>
<p>接着在map中查找对应的obj</p>
<p>&nbsp;Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Publics by Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rva+Base&nbsp;&nbsp;&nbsp;&nbsp; Lib:Object<br><br>&nbsp;0000:00000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; __except_list&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00000000&nbsp;&nbsp;&nbsp;&nbsp; &lt;absolute&gt;<br>&nbsp;0000:00000002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ___safe_se_handler_count&nbsp;&nbsp; 00000002&nbsp;&nbsp;&nbsp;&nbsp; &lt;absolute&gt;<br><span style="color: red;">&nbsp;0001:00000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _main&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00401000 f&nbsp;&nbsp; test1.obj</span><br>&nbsp;0001:00000017&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; __amsg_exit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00401017 f&nbsp;&nbsp; LIBC:crt0.obj<br>&nbsp;0001:0000003c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _mainCRTStartup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0040103c f&nbsp;&nbsp; LIBC:crt0.obj<br>&nbsp;0001:00000203&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ___crtExitProcess&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00401203 f&nbsp;&nbsp; LIBC:crt0dat.obj</p>
<br>
<p>最后根据obj和计算的值在map中找第一个小于我们所计算的值的位置</p>
<p>Line numbers for .\release\test1.obj(d:\test\test1\test1\test1.cpp) segment .text<br><br>&nbsp;&nbsp;&nbsp;&nbsp; 2 0001:00000000&nbsp;&nbsp;&nbsp;&nbsp; 3 0001:00000004&nbsp;&nbsp;&nbsp;&nbsp; 4 0001:0000000b&nbsp;&nbsp;&nbsp;&nbsp; 5 0001:00000011<br></p>
<p>然后在.map中查找第一个小于我们所计算的值的位置</p>
<p>所以我们的中断位置是在第4行<br></p><img src ="http://www.cppblog.com/lijialian/aggbug/23360.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lijialian/" target="_blank">一动不如一静</a> 2007-05-03 10:44 <a href="http://www.cppblog.com/lijialian/archive/2007/05/03/23360.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>好的工具</title><link>http://www.cppblog.com/lijialian/archive/2007/03/07/19391.html</link><dc:creator>一动不如一静</dc:creator><author>一动不如一静</author><pubDate>Wed, 07 Mar 2007 15:29:00 GMT</pubDate><guid>http://www.cppblog.com/lijialian/archive/2007/03/07/19391.html</guid><wfw:comment>http://www.cppblog.com/lijialian/comments/19391.html</wfw:comment><comments>http://www.cppblog.com/lijialian/archive/2007/03/07/19391.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lijialian/comments/commentRss/19391.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lijialian/services/trackbacks/19391.html</trackback:ping><description><![CDATA[Hummingbird connectivity<br /><img src ="http://www.cppblog.com/lijialian/aggbug/19391.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lijialian/" target="_blank">一动不如一静</a> 2007-03-07 23:29 <a href="http://www.cppblog.com/lijialian/archive/2007/03/07/19391.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何用windug分析dump文件(还原堆栈信息)</title><link>http://www.cppblog.com/lijialian/archive/2007/03/07/19389.html</link><dc:creator>一动不如一静</dc:creator><author>一动不如一静</author><pubDate>Wed, 07 Mar 2007 15:17:00 GMT</pubDate><guid>http://www.cppblog.com/lijialian/archive/2007/03/07/19389.html</guid><wfw:comment>http://www.cppblog.com/lijialian/comments/19389.html</wfw:comment><comments>http://www.cppblog.com/lijialian/archive/2007/03/07/19389.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lijialian/comments/commentRss/19389.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lijialian/services/trackbacks/19389.html</trackback:ping><description><![CDATA[<p>首先用~*kb,察看所有的线程<br>然后寻找Filter关键字所在的线程,假设出问题的线程为12,.<br><br>首先将线程2设置为当前线程： ~2s<br>因为XcpFilter的结构体中，第2个参数表示异常信息的指针，第3个参数是上下文的指针。<br>假设args to child <br>&nbsp;&nbsp;&nbsp; 0x0001 0xb5f78 0x45235</p>
<p>执行.exr 0xb5f78 <br>执行.cxr 0x45235</p>
<p>执行.kb就可以还原堆栈信息了<br><br></p>
<img src ="http://www.cppblog.com/lijialian/aggbug/19389.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lijialian/" target="_blank">一动不如一静</a> 2007-03-07 23:17 <a href="http://www.cppblog.com/lijialian/archive/2007/03/07/19389.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TP_Reactor 学习笔记</title><link>http://www.cppblog.com/lijialian/archive/2007/02/25/18971.html</link><dc:creator>一动不如一静</dc:creator><author>一动不如一静</author><pubDate>Sun, 25 Feb 2007 12:41:00 GMT</pubDate><guid>http://www.cppblog.com/lijialian/archive/2007/02/25/18971.html</guid><wfw:comment>http://www.cppblog.com/lijialian/comments/18971.html</wfw:comment><comments>http://www.cppblog.com/lijialian/archive/2007/02/25/18971.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lijialian/comments/commentRss/18971.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lijialian/services/trackbacks/18971.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ACE_TP_Reactor::ACE_TP_Reactor (size_t max_number_of_handles,                                				int				 restart,                                ACE_Sig_Handler 				*				sh,                   ...&nbsp;&nbsp;<a href='http://www.cppblog.com/lijialian/archive/2007/02/25/18971.html'>阅读全文</a><img src ="http://www.cppblog.com/lijialian/aggbug/18971.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lijialian/" target="_blank">一动不如一静</a> 2007-02-25 20:41 <a href="http://www.cppblog.com/lijialian/archive/2007/02/25/18971.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>select_reactor的原码学习笔记</title><link>http://www.cppblog.com/lijialian/archive/2007/02/24/18950.html</link><dc:creator>一动不如一静</dc:creator><author>一动不如一静</author><pubDate>Sat, 24 Feb 2007 12:30:00 GMT</pubDate><guid>http://www.cppblog.com/lijialian/archive/2007/02/24/18950.html</guid><wfw:comment>http://www.cppblog.com/lijialian/comments/18950.html</wfw:comment><comments>http://www.cppblog.com/lijialian/archive/2007/02/24/18950.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lijialian/comments/commentRss/18950.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lijialian/services/trackbacks/18950.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 首先从定义一个reactor开始。ACE_TP_Reactor select_reactor_one(g_unOneMaxHandle, 0, 0, 0, 1);		上面的这句话触发了一下的一些行为。主要就是给event_handlers_分配了内存。这里就决定了你能支持多少条连接										int																ACE_Select_React...&nbsp;&nbsp;<a href='http://www.cppblog.com/lijialian/archive/2007/02/24/18950.html'>阅读全文</a><img src ="http://www.cppblog.com/lijialian/aggbug/18950.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lijialian/" target="_blank">一动不如一静</a> 2007-02-24 20:30 <a href="http://www.cppblog.com/lijialian/archive/2007/02/24/18950.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>N个Reactor是否就意味着支持N*FD_SETSIZE个连接呢？</title><link>http://www.cppblog.com/lijialian/archive/2007/02/22/18917.html</link><dc:creator>一动不如一静</dc:creator><author>一动不如一静</author><pubDate>Thu, 22 Feb 2007 15:25:00 GMT</pubDate><guid>http://www.cppblog.com/lijialian/archive/2007/02/22/18917.html</guid><wfw:comment>http://www.cppblog.com/lijialian/comments/18917.html</wfw:comment><comments>http://www.cppblog.com/lijialian/archive/2007/02/22/18917.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lijialian/comments/commentRss/18917.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lijialian/services/trackbacks/18917.html</trackback:ping><description><![CDATA[
		<p> </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img id="Codehighlighter1_0_835_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_835_Open_Text.style.display='none'; Codehighlighter1_0_835_Closed_Image.style.display='inline'; Codehighlighter1_0_835_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_0_835_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_835_Closed_Text.style.display='none'; Codehighlighter1_0_835_Open_Image.style.display='inline'; Codehighlighter1_0_835_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span id="Codehighlighter1_0_835_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
				<span id="Codehighlighter1_0_835_Open_Text">
						<span style="COLOR: #008000">/*</span>
						<span style="COLOR: #008000">*******************************************************************<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />* Copyright (c) 2006,study-record home<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />* All rights reservered.<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />*<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />* 文件名称 : littersize.cpp <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />* 摘    要 : 这个例子主要是用来验证这样一个问题。当我们程序中有n个reactor的时候，是否就意味着我们支持n*FD_SETSIZE连接.<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                   为了验证这个问题,我们传递一个大小为2的值给ACE_Select_Reactor的构造函数。看是否是只支持2个连接?<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                   验证结果表明：在本例子中，由于acceptor注册用掉了一个，而我们给定的最大的handle数为2,所以只能接受一个连接。<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                   在命令行下输入：telnet 127.0.0.1 1234 ,在我们第二次输入时，<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                   在调用int nRet = m_Reactor-&gt;register_handler(pEvent, ACE_Event_Handler::READ_MASK);的时候一定会失败。<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                   但是在命令行下输入:telnet 127.0.0.1 2345 ,在我们第三次输入的时候，调用register_handler的时候才会失败<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                   但是这样的一段代码存在高cpu的问题，也就是当把客户端关调的时候，cpu占用率会很高?想想看，为什么呢？<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                   本代码只是为了验证一些东西，有很多不合理的地方，请务仿照。<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />*<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />* 当前版本 : 1.0<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />* 作    者 : study-record   2007-2-22<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />*<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />********************************************************************</span>
						<span style="COLOR: #008000">*/</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">ace/Thread_Manager.h</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">ace/Select_Reactor.h</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">ace/Reactor.h</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">ace/Event_Handler.h</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">ace/SOCK_Acceptor.h</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">ace/SOCK_Stream.h</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">ace/INET_Addr.h</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">const</span>
				<span style="COLOR: #000000"> size_t g_unOneMaxHandle </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">2</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">const</span>
				<span style="COLOR: #000000"> size_t g_unTwoMaxhandle </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">4</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">static</span>
				<span style="COLOR: #000000"> ACE_THR_FUNC_RETURN event_loop_one (</span>
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">arg) <br /><img id="Codehighlighter1_1173_1321_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1173_1321_Open_Text.style.display='none'; Codehighlighter1_1173_1321_Closed_Image.style.display='inline'; Codehighlighter1_1173_1321_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_1173_1321_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1173_1321_Closed_Text.style.display='none'; Codehighlighter1_1173_1321_Open_Image.style.display='inline'; Codehighlighter1_1173_1321_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_1173_1321_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.cppblog.com/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_1173_1321_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ACE_Reactor </span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000">reacator </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> static_cast</span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">ACE_Reactor </span>
						<span style="COLOR: #000000">*&gt;</span>
						<span style="COLOR: #000000">(arg);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    reacator</span>
						<span style="COLOR: #000000">-&gt;</span>
						<span style="COLOR: #000000">owner(ACE_Thread::self());<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    reacator</span>
						<span style="COLOR: #000000">-&gt;</span>
						<span style="COLOR: #000000">run_reactor_event_loop();<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">static</span>
				<span style="COLOR: #000000"> ACE_THR_FUNC_RETURN event_loop_two (</span>
				<span style="COLOR: #0000ff">void</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">arg) <br /><img id="Codehighlighter1_1378_1525_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1378_1525_Open_Text.style.display='none'; Codehighlighter1_1378_1525_Closed_Image.style.display='inline'; Codehighlighter1_1378_1525_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_1378_1525_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1378_1525_Closed_Text.style.display='none'; Codehighlighter1_1378_1525_Open_Image.style.display='inline'; Codehighlighter1_1378_1525_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_1378_1525_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.cppblog.com/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_1378_1525_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ACE_Reactor </span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000">reacator </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> static_cast</span>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">ACE_Reactor </span>
						<span style="COLOR: #000000">*&gt;</span>
						<span style="COLOR: #000000">(arg);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    reacator</span>
						<span style="COLOR: #000000">-&gt;</span>
						<span style="COLOR: #000000">owner(ACE_Thread::self());<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    reacator</span>
						<span style="COLOR: #000000">-&gt;</span>
						<span style="COLOR: #000000">run_reactor_event_loop();<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> TestHandleEvent: </span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> ACE_Event_Handler<br /><img id="Codehighlighter1_1576_2006_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1576_2006_Open_Text.style.display='none'; Codehighlighter1_1576_2006_Closed_Image.style.display='inline'; Codehighlighter1_1576_2006_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_1576_2006_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1576_2006_Closed_Text.style.display='none'; Codehighlighter1_1576_2006_Open_Image.style.display='inline'; Codehighlighter1_1576_2006_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_1576_2006_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.cppblog.com/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_1576_2006_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000">:<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">virtual</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> handle_input (ACE_HANDLE fd </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> ACE_INVALID_HANDLE)<br /><img id="Codehighlighter1_1650_1726_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1650_1726_Open_Text.style.display='none'; Codehighlighter1_1650_1726_Closed_Image.style.display='inline'; Codehighlighter1_1650_1726_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1650_1726_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1650_1726_Closed_Text.style.display='none'; Codehighlighter1_1650_1726_Open_Image.style.display='inline'; Codehighlighter1_1650_1726_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_1650_1726_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.cppblog.com/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_1650_1726_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        ACE_DEBUG((LM_DEBUG, </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">TestHandleEvent::handle_input\n</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">));<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">0</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">virtual</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> handle_close (ACE_HANDLE handle, ACE_Reactor_Mask close_mask)<br /><img id="Codehighlighter1_1805_1900_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1805_1900_Open_Text.style.display='none'; Codehighlighter1_1805_1900_Closed_Image.style.display='inline'; Codehighlighter1_1805_1900_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1805_1900_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1805_1900_Closed_Text.style.display='none'; Codehighlighter1_1805_1900_Open_Image.style.display='inline'; Codehighlighter1_1805_1900_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_1805_1900_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.cppblog.com/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_1805_1900_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        ACE_DEBUG((LM_DEBUG, </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">TestHandleEvent::handle_close\n</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">));<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        delete </span>
								<span style="COLOR: #0000ff">this</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">0</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ACE_HANDLE get_handle(</span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000">) </span>
						<span style="COLOR: #0000ff">const</span>
						<span style="COLOR: #000000"> <br /><img id="Codehighlighter1_1940_1971_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1940_1971_Open_Text.style.display='none'; Codehighlighter1_1940_1971_Closed_Image.style.display='inline'; Codehighlighter1_1940_1971_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1940_1971_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1940_1971_Closed_Text.style.display='none'; Codehighlighter1_1940_1971_Open_Image.style.display='inline'; Codehighlighter1_1940_1971_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_1940_1971_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.cppblog.com/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_1940_1971_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> peer.get_handle();<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000">:<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ACE_SOCK_Stream peer;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> TestAcceptor : </span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> ACE_Event_Handler<br /><img id="Codehighlighter1_2055_2943_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2055_2943_Open_Text.style.display='none'; Codehighlighter1_2055_2943_Closed_Image.style.display='inline'; Codehighlighter1_2055_2943_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_2055_2943_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2055_2943_Closed_Text.style.display='none'; Codehighlighter1_2055_2943_Open_Image.style.display='inline'; Codehighlighter1_2055_2943_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_2055_2943_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.cppblog.com/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_2055_2943_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000">:<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">virtual</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> handle_input (ACE_HANDLE fd </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> ACE_INVALID_HANDLE)<br /><img id="Codehighlighter1_2129_2372_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2129_2372_Open_Text.style.display='none'; Codehighlighter1_2129_2372_Closed_Image.style.display='inline'; Codehighlighter1_2129_2372_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2129_2372_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2129_2372_Closed_Text.style.display='none'; Codehighlighter1_2129_2372_Open_Image.style.display='inline'; Codehighlighter1_2129_2372_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_2129_2372_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.cppblog.com/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_2129_2372_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        TestHandleEvent</span>
								<span style="COLOR: #000000">*</span>
								<span style="COLOR: #000000"> pEvent </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> TestHandleEvent;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        acceptor.accept(pEvent</span>
								<span style="COLOR: #000000">-&gt;</span>
								<span style="COLOR: #000000">peer);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">int</span>
								<span style="COLOR: #000000"> nRet </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> m_Reactor</span>
								<span style="COLOR: #000000">-&gt;</span>
								<span style="COLOR: #000000">register_handler(pEvent, ACE_Event_Handler::READ_MASK);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">if</span>
								<span style="COLOR: #000000"> (</span>
								<span style="COLOR: #000000">-</span>
								<span style="COLOR: #000000">1</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">==</span>
								<span style="COLOR: #000000"> nRet)<br /><img id="Codehighlighter1_2316_2356_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2316_2356_Open_Text.style.display='none'; Codehighlighter1_2316_2356_Closed_Image.style.display='inline'; Codehighlighter1_2316_2356_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2316_2356_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2316_2356_Closed_Text.style.display='none'; Codehighlighter1_2316_2356_Open_Image.style.display='inline'; Codehighlighter1_2316_2356_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
								<span id="Codehighlighter1_2316_2356_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.cppblog.com/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_2316_2356_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            delete pEvent;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            pEvent </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> NULL;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
										<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">0</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">virtual</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> handle_close (ACE_HANDLE handle, ACE_Reactor_Mask close_mask)<br /><img id="Codehighlighter1_2451_2561_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2451_2561_Open_Text.style.display='none'; Codehighlighter1_2451_2561_Closed_Image.style.display='inline'; Codehighlighter1_2451_2561_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2451_2561_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2451_2561_Closed_Text.style.display='none'; Codehighlighter1_2451_2561_Open_Image.style.display='inline'; Codehighlighter1_2451_2561_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_2451_2561_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.cppblog.com/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_2451_2561_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        ACE_DEBUG((LM_DEBUG, </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">TestAcceptor::handle_close\n</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">));<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        acceptor.close();<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        delete </span>
								<span style="COLOR: #0000ff">this</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">0</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    TestAcceptor(ACE_Reactor</span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000"> reactor):m_Reactor(reactor)<br /><img id="Codehighlighter1_2624_2630_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2624_2630_Open_Text.style.display='none'; Codehighlighter1_2624_2630_Closed_Image.style.display='inline'; Codehighlighter1_2624_2630_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2624_2630_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2624_2630_Closed_Text.style.display='none'; Codehighlighter1_2624_2630_Open_Image.style.display='inline'; Codehighlighter1_2624_2630_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_2624_2630_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.cppblog.com/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_2624_2630_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        <br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> open(unsigned </span>
						<span style="COLOR: #0000ff">short</span>
						<span style="COLOR: #000000"> usport)<br /><img id="Codehighlighter1_2667_2800_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2667_2800_Open_Text.style.display='none'; Codehighlighter1_2667_2800_Closed_Image.style.display='inline'; Codehighlighter1_2667_2800_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2667_2800_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2667_2800_Closed_Text.style.display='none'; Codehighlighter1_2667_2800_Open_Image.style.display='inline'; Codehighlighter1_2667_2800_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_2667_2800_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.cppblog.com/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_2667_2800_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        ACE_INET_Addr addr(usport);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        acceptor.open(addr);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> m_Reactor</span>
								<span style="COLOR: #000000">-&gt;</span>
								<span style="COLOR: #000000">register_handler(</span>
								<span style="COLOR: #0000ff">this</span>
								<span style="COLOR: #000000">, ACE_Event_Handler::ACCEPT_MASK);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ACE_HANDLE get_handle(</span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000">) </span>
						<span style="COLOR: #0000ff">const</span>
						<span style="COLOR: #000000"> <br /><img id="Codehighlighter1_2840_2878_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2840_2878_Open_Text.style.display='none'; Codehighlighter1_2840_2878_Closed_Image.style.display='inline'; Codehighlighter1_2840_2878_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2840_2878_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2840_2878_Closed_Text.style.display='none'; Codehighlighter1_2840_2878_Open_Image.style.display='inline'; Codehighlighter1_2840_2878_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_2840_2878_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.cppblog.com/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_2840_2878_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> acceptor.get_handle();<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000">:<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ACE_SOCK_Acceptor acceptor;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ACE_Reactor</span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000"> m_Reactor;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> main (</span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> argc, </span>
				<span style="COLOR: #0000ff">char</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">argv[])<br /><img id="Codehighlighter1_2982_3593_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2982_3593_Open_Text.style.display='none'; Codehighlighter1_2982_3593_Closed_Image.style.display='inline'; Codehighlighter1_2982_3593_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_2982_3593_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2982_3593_Closed_Text.style.display='none'; Codehighlighter1_2982_3593_Open_Image.style.display='inline'; Codehighlighter1_2982_3593_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_2982_3593_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.cppblog.com/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_2982_3593_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ACE_Select_Reactor select_reactor_one(g_unOneMaxHandle, </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">, </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">, </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">, </span>
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ACE_Reactor</span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000"> reactor_one </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> ACE_Reactor(</span>
						<span style="COLOR: #000000">&amp;</span>
						<span style="COLOR: #000000">select_reactor_one);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ACE_Select_Reactor select_reactor_two(g_unTwoMaxhandle, </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">, </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">, </span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">, </span>
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ACE_Reactor</span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000"> reactor_two </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> ACE_Reactor(</span>
						<span style="COLOR: #000000">&amp;</span>
						<span style="COLOR: #000000">select_reactor_two);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    TestAcceptor test_acceptor(reactor_one);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    test_acceptor.open(</span>
						<span style="COLOR: #000000">1234</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    TestAcceptor test_acceptorw(reactor_two);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    test_acceptorw.open(</span>
						<span style="COLOR: #000000">2345</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ACE_Thread_Manager::instance()</span>
						<span style="COLOR: #000000">-&gt;</span>
						<span style="COLOR: #000000">spawn(event_loop_one, reactor_one);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    ACE_Thread_Manager::instance()</span>
						<span style="COLOR: #000000">-&gt;</span>
						<span style="COLOR: #000000">spawn(event_loop_two, reactor_two);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000"> ACE_Thread_Manager::instance()</span>
						<span style="COLOR: #000000">-&gt;</span>
						<span style="COLOR: #000000">wait();<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
		</div>
<img src ="http://www.cppblog.com/lijialian/aggbug/18917.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lijialian/" target="_blank">一动不如一静</a> 2007-02-22 23:25 <a href="http://www.cppblog.com/lijialian/archive/2007/02/22/18917.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>window上如何设置才能获取dump文件</title><link>http://www.cppblog.com/lijialian/archive/2006/12/10/16214.html</link><dc:creator>一动不如一静</dc:creator><author>一动不如一静</author><pubDate>Sun, 10 Dec 2006 04:52:00 GMT</pubDate><guid>http://www.cppblog.com/lijialian/archive/2006/12/10/16214.html</guid><wfw:comment>http://www.cppblog.com/lijialian/comments/16214.html</wfw:comment><comments>http://www.cppblog.com/lijialian/archive/2006/12/10/16214.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lijialian/comments/commentRss/16214.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lijialian/services/trackbacks/16214.html</trackback:ping><description><![CDATA[近来在工作中总是会有一些dump文件需要分析，但是自己对windug十分陌生。所以就想自己产生几个coredump文件，然后学习着用windug进行分析。虽然有了这个想法，但是不知道怎么才能在windows上产生coredump文件。于是抱着试试的想法，搜索了一下，结果还真让我给搜到了。<br />在以下的这个网址讲述了如何在xp和2000上如何设置？<br />http://publib.boulder.ibm.com/infocenter/wasinfo/v4r0/index.jsp?topic=/com.ibm.support.was40.doc/html/Crash/swg21113013.html<br /><br />现在我呢，就做了搬运工，搬到这里^_^。<br /><br /><table border="0" cellpadding="0" cellspacing="0" width="443"><tbody><tr><td width="443"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr valign="top"><td width="438"><table border="0" cellpadding="0" cellspacing="0" width="443"><tbody><tr><td height="20" valign="bottom" width="443"><b>Solution</b></td></tr><tr><td width="443"><ol type="1"><li>Open a command prompt window.
<br /><br /></li><li>Enter the command <b>drwtsn32.exe</b>.
<br /><br />
The following window will display: 
<ul><li type="disc"><b>For Windows 2000:
<br /></b><br /><img src="http://publib.boulder.ibm.com/infocenter/wasinfo/v4r0/topic/com.ibm.support.was40.doc/images/support/docview.wss/swg21113013_1.gif" alt="" height="458" width="332" /><br /><br /></li><li type="disc"><b>For Windows XP:
<br /></b><br /><img src="http://publib.boulder.ibm.com/infocenter/wasinfo/v4r0/topic/com.ibm.support.was40.doc/images/support/docview.wss/swg21113013_2.gif" alt="" height="492" width="332" /><br /><br /></li></ul></li><li>In the <b>Log File Path</b> field, type the location to where you want
the <tt>DrWatson</tt> log to be stored.
<br /><br /></li><li>In the <b>Crash Dump</b> field, type the file name and location where
you want the <tt>user.dmp</tt> file to be stored.
<br /><br /></li><li>Make sure that the following options are selected: 
<ol type="a"><li><b>Dump Symbol Table</b></li><li><b>Dump All Thread Contents</b></li><li><b>Visual Notification</b></li><li><b>Create Crash Dump File
<br /></b><br /></li></ol></li><li>If you are running Windows XP, set <b>Crash Dump Type</b> to <b>NT4
Full Compatible</b>.
<br /><br /></li><li>From a command prompt, enter <b>drwtsn32 -i</b> to re-enable Dr.
Watson as your default Windows debugger. This will make the necessary
changes in the Windows registry.</li></ol></td></tr><tr><td> </td></tr></tbody></table></td></tr><tr valign="top"><td width="438"><br /></td></tr><tr><td><br /></td></tr></tbody></table></td><td> </td></tr></tbody></table><br /><br /><br /><br /><br /><br /><img src ="http://www.cppblog.com/lijialian/aggbug/16214.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lijialian/" target="_blank">一动不如一静</a> 2006-12-10 12:52 <a href="http://www.cppblog.com/lijialian/archive/2006/12/10/16214.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一些常用的定位问题的方法</title><link>http://www.cppblog.com/lijialian/archive/2006/12/09/16180.html</link><dc:creator>一动不如一静</dc:creator><author>一动不如一静</author><pubDate>Sat, 09 Dec 2006 12:04:00 GMT</pubDate><guid>http://www.cppblog.com/lijialian/archive/2006/12/09/16180.html</guid><wfw:comment>http://www.cppblog.com/lijialian/comments/16180.html</wfw:comment><comments>http://www.cppblog.com/lijialian/archive/2006/12/09/16180.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lijialian/comments/commentRss/16180.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lijialian/services/trackbacks/16180.html</trackback:ping><description><![CDATA[１．定位进程到底是挂在哪里<br />　　psstack 进程ID &gt; 文件名称<br />        cat 文件名称 | c++filt &gt; 其他的文件　　　<br />2.   snoopy抓包<br />     a.先用ifconfig查出设备名称，假设为bge0<br />    b. snoop -d bge0 -o 文件文成　目的机器的IP地址<br />    c.snoopy from ip地址　to ip地址<br />　　<br />   3.抓ｄｕｍｐ包之后用windug分析。这里的学问就大了。目前正在学习中<br /><img src ="http://www.cppblog.com/lijialian/aggbug/16180.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lijialian/" target="_blank">一动不如一静</a> 2006-12-09 20:04 <a href="http://www.cppblog.com/lijialian/archive/2006/12/09/16180.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>异步I/O</title><link>http://www.cppblog.com/lijialian/archive/2006/10/07/13410.html</link><dc:creator>一动不如一静</dc:creator><author>一动不如一静</author><pubDate>Sat, 07 Oct 2006 05:57:00 GMT</pubDate><guid>http://www.cppblog.com/lijialian/archive/2006/10/07/13410.html</guid><wfw:comment>http://www.cppblog.com/lijialian/comments/13410.html</wfw:comment><comments>http://www.cppblog.com/lijialian/archive/2006/10/07/13410.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lijialian/comments/commentRss/13410.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lijialian/services/trackbacks/13410.html</trackback:ping><description><![CDATA[一直对异步IO怀有恐惧之心，所以到现在也没有仔细的去研究过，但是老师怎么告诉我们说要用于面对困难，所以决定坐下来研究一下，看看到底有多高深,不向困难低头^_^<br /><br />资源：http://www.zahui.com/html/9/35437.htm<img src ="http://www.cppblog.com/lijialian/aggbug/13410.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lijialian/" target="_blank">一动不如一静</a> 2006-10-07 13:57 <a href="http://www.cppblog.com/lijialian/archive/2006/10/07/13410.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>