﻿<?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++博客-Error-文章分类-VC路上的坑</title><link>http://www.cppblog.com/Error/category/18297.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 24 Feb 2013 03:00:19 GMT</lastBuildDate><pubDate>Sun, 24 Feb 2013 03:00:19 GMT</pubDate><ttl>60</ttl><item><title>伙神的读写锁实现</title><link>http://www.cppblog.com/Error/articles/197989.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Fri, 22 Feb 2013 00:54:00 GMT</pubDate><guid>http://www.cppblog.com/Error/articles/197989.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/197989.html</wfw:comment><comments>http://www.cppblog.com/Error/articles/197989.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/197989.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/197989.html</trackback:ping><description><![CDATA[<div>&nbsp;吉林-小伙(694129464)&nbsp;&nbsp;19:59:24<br />class&nbsp;CReadWriteLock<br />{<br />private:<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;m_nReadCount;<br />&nbsp;&nbsp;&nbsp;&nbsp;pthread_mutex_t&nbsp;m_mutexRead;<br />&nbsp;&nbsp;&nbsp;&nbsp;pthread_mutex_t&nbsp;m_mutexWrite;<br />public:<br />&nbsp;&nbsp;&nbsp;&nbsp;CReadWriteLock():m_nReadCount(0)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_mutex_init(&amp;m_mutexRead,&nbsp;NULL);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_mutex_init(&amp;m_mutexWrite,&nbsp;NULL);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;~CReadWriteLock()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_mutex_destroy(&amp;m_mutexRead);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_mutex_destroy(&amp;m_mutexWrite);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />public:<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;LockRead()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_mutex_lock(&amp;m_mutexRead);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_nReadCount++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(m_nReadCount&nbsp;==&nbsp;1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_mutex_lock(&amp;m_mutexWrite);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_mutex_unlock(&amp;m_mutexRead);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("read&nbsp;lock\n");<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;UnlockRead()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_mutex_lock(&amp;m_mutexRead);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_nReadCount--;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(m_nReadCount&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_mutex_unlock(&amp;m_mutexWrite);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_mutex_unlock(&amp;m_mutexRead);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("read&nbsp;unlock\n");<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;LockWrite()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_mutex_lock(&amp;m_mutexWrite);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("write&nbsp;lock\n");<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;UnlockWrite()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_mutex_unlock(&amp;m_mutexWrite);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("write&nbsp;unlock\n");<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />};<br /><br /><br /><br /><div>&nbsp;深圳-C/C++传奇(605934668)&nbsp;&nbsp;20:03:45<br />posix有现成的读写mutex<br />吉林-小伙(694129464)&nbsp;&nbsp;20:03:57<br />我昨天搜索了一下资料&nbsp;的确有<br />吉林-小伙(694129464)&nbsp;&nbsp;20:06:42<br />phtread_rwlock_init<br />pthread_rwlock_destroy</div><div>&nbsp;吉林-小伙(694129464)&nbsp;&nbsp;20:38:21<br />靠&nbsp;我说用&nbsp;rwlock&nbsp;怎么不死锁了呢<br />我以为我用错了呢<br />原来是死锁&nbsp;会返回&nbsp;一个35错误码<br />程序还会执行<br />更高级一点<br /><br /><br /><br /><br />伙神的实现中，逻辑主要几种在读锁，写锁是&#8220;被动模式&#8221;。读锁根据读锁次数操作写锁状态。读锁保证，当读锁操作&gt;0的时候写锁是锁住的，当读锁==0的时候写锁是解开的。</div></div><img src ="http://www.cppblog.com/Error/aggbug/197989.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2013-02-22 08:54 <a href="http://www.cppblog.com/Error/articles/197989.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于vs2012 sp1设置编译兼容xp和字体设置</title><link>http://www.cppblog.com/Error/articles/197986.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Thu, 21 Feb 2013 14:45:00 GMT</pubDate><guid>http://www.cppblog.com/Error/articles/197986.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/197986.html</wfw:comment><comments>http://www.cppblog.com/Error/articles/197986.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/197986.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/197986.html</trackback:ping><description><![CDATA[1.设置兼容XP<br />project property -&gt; configuration properties -&gt; general -&gt; Platform toolset -&gt;&nbsp;Visual Studio 2012 - Windows XP (v110_xp)<br /><br />2.字体设置<br />tools -&gt; options -&gt; environment -&gt; fonts and colors -&gt; font<br /><br /><br />*************************<br />consolas字体 9号大小看起来很舒服<br /><img src ="http://www.cppblog.com/Error/aggbug/197986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2013-02-21 22:45 <a href="http://www.cppblog.com/Error/articles/197986.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>读写锁引发的讨论</title><link>http://www.cppblog.com/Error/articles/197660.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Thu, 31 Jan 2013 11:33:00 GMT</pubDate><guid>http://www.cppblog.com/Error/articles/197660.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/197660.html</wfw:comment><comments>http://www.cppblog.com/Error/articles/197660.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/197660.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/197660.html</trackback:ping><description><![CDATA[<!--StartFragment -->


<div>VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:45:53<br />尼玛，我现在要读写锁<br />哪为接我一个<br />等boost能用了还给你<br />vczh四号粉丝(342775210)&nbsp;&nbsp;18:46:25<br />不优化性能<br />优化啥啊,根本就没性能问题<br />(逃<br /><img alt="" src="file:///E:/职场修炼术/QQ/85126585/Image/Image16/%7BQ$(LSR4OHH5OMZ)[W%60%7D%7B82.jpg" /><br />这摩托上班看着不错<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:47:08<br />我去<br />难道你们都不用读写所的，，，<br />hzcv.粉丝数组[-1](450635425)&nbsp;&nbsp;18:47:04<br />想要一个<br />我以前有一个，但明显没这个号<br />vczh四号粉丝(342775210)&nbsp;&nbsp;18:47:18<br />必须不用<br />读写锁就是搓<br />hzcv.粉丝数组[-1](450635425)&nbsp;&nbsp;18:47:31<br />普通锁不行吗？<br />vczh四号粉丝(342775210)&nbsp;&nbsp;18:47:36<br />是啊<br />普通的锁这么好<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:47:50<br />尼玛，让我做框架<br />那群队友都懒的不行啊<br />我让他用锁&nbsp;他不乐意<br />一定要我在底层全部搞完了<br />vczh四号粉丝(342775210)&nbsp;&nbsp;18:48:22<br />直接用手枪轰死他们<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:49:39<br />就是个加载自动更新的东西<br />原来是一个bool类型没有用锁保护<br />现在我来做，我想还是保护下<br />vczh四号粉丝(342775210)&nbsp;&nbsp;18:49:46<br />用atomic<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:49:53<br />尼玛问题就来了<br />问题是<br />他们要要求加载的时候&nbsp;读动作能自动挂起<br />又要偷懒<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:52:07<br />我继续去粪堆里拔东西<br />哎<br />vczh四号粉丝(342775210)&nbsp;&nbsp;18:52:10<br />atomic不行嘛?<br />hzcv.粉丝数组[-1](450635425)&nbsp;&nbsp;18:52:42<br />读写留两个函数<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:52:58<br />这样的<br /><br />有个mutex&nbsp;加载的时候lock上，bool&nbsp;ture<br />hzcv.粉丝数组[-1](450635425)&nbsp;&nbsp;18:52:52<br />用mutex一夹，OK<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:53:02<br />然后查询的时候<br />不理会mutex<br />监视到ture才&nbsp;unlock<br />vczh四号粉丝(342775210)&nbsp;&nbsp;18:54:41<br />你那个是windows<br />不能用mutex夹<br />windows得用spin&nbsp;lock&nbsp;夹<br />(逃<br />vczh.lsbandar(14735407)&nbsp;&nbsp;18:55:04<br />。。。&nbsp;<br />关键段不用&nbsp;<br />用什么spinlock&nbsp;<br />hzcv.粉丝数组[-1](450635425)&nbsp;&nbsp;18:55:41<br />CriticalSection<br />hzcv.粉丝数组[-1](450635425)&nbsp;&nbsp;19:00:28<br />Spinlock是什么？<br />hzcv.粉丝数组[-1](450635425)&nbsp;&nbsp;19:02:19<br />#if&nbsp;defined(UNIX)<br />pthread_mutex_lock(&amp;mutex_agent_list);<br />#elif&nbsp;defined(WINDOWS)<br />EnterCriticalSection(&amp;cs_agent_list);<br />#endif<br /><br />SpinLock和CriticalSection有什么不同啊？<img alt="" src="file:///C:/DOCUME~1/cail/LOCALS~1/Temp/52W[C~~FFQ[27)18U93ZOWB.gif" sysface="111" /><br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:03:04<br />criticalsection是递归的<br />&nbsp;<br />同一个线程可以enter两次<br />&nbsp;<br />都没问题<br />&nbsp;<br />leave两次<br />&nbsp;<br />VCZH.粉丝数组[5](110086478)&nbsp;&nbsp;19:03:28<br />sscanf&nbsp;的性能比较差？<br />vczh.lsbandar(14735407)&nbsp;&nbsp;19:03:40<br />还可以&nbsp;<br />hzcv.粉丝数组[-1](450635425)&nbsp;&nbsp;19:03:53<br />哦？递归的？<br />IC<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;19:08:43<br />个人感觉<br />可递归锁<br />就是一个大坑<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:11:32<br />有什么好坑<br />&nbsp;<br />你要是当她不能递归<br />&nbsp;<br />那就跟别的一样了<br />&nbsp;<br />坑只会更少<br />&nbsp;<br />ooseven(147340642)&nbsp;&nbsp;19:12:57<br />同一个线程下什么场景会导致连续申请锁两次？<br />VCZH.粉丝数组[5](110086478)&nbsp;&nbsp;19:13:08<br />parse一个IP地址，有没有比sscanf更快的<br />ooseven(147340642)&nbsp;&nbsp;19:13:19<br />同一线程下的程序不都是按顺序来的吗？<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:13:29<br />可以递归的锁<br />&nbsp;<br />具有可组合性<br />&nbsp;<br />写起代码省心多了<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;19:14:13<br />很多吭<br />ooseven(147340642)&nbsp;&nbsp;19:14:16<br />我的意思是说，同一线程下的代码，怎么会有并发申请锁的机会？<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:14:23<br />不会<br />&nbsp;<br />但是你可以申请他两次<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;19:14:50<br />偷懒<br />Yaoxin(7936511)&nbsp;&nbsp;19:14:43<br />&nbsp;比如插入一个值，这个插入代码中又要算长度。&nbsp;<br />ooseven(147340642)&nbsp;&nbsp;19:14:44<br />有啥好处呢？<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:14:46<br />人懒不能怪工具<br />&nbsp;<br />ooseven(147340642)&nbsp;&nbsp;19:15:15<br />申请锁两次有啥好处？<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:15:22<br />这个嘛<br />&nbsp;<br />譬如说我一个类的所有函数<br />&nbsp;<br />都申请了那个锁<br />&nbsp;<br />结果有一天<br />&nbsp;<br />这种设计还是很常见的吧<br />&nbsp;<br />我一个函数要调用另一个函数了<br />&nbsp;<br />省点代码<br />&nbsp;<br />你用criticalsection<br />&nbsp;<br />vczh.lsbandar(14735407)&nbsp;&nbsp;19:15:49<br />可以递归&nbsp;<br />ooseven(147340642)&nbsp;&nbsp;19:15:50<br />了解<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:15:52<br />就不会自己锁死自己了<br />&nbsp;<br />ooseven(147340642)&nbsp;&nbsp;19:15:57<br />这样也行<br />！<br />vczh.lsbandar(14735407)&nbsp;&nbsp;19:16:06<br />避免你写出傻逼的死锁程序&nbsp;<br />这几乎是必须的&nbsp;<br />ooseven(147340642)&nbsp;&nbsp;19:16:23<br />啥啊，这是大bug吧<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:16:26<br />不是<br />&nbsp;<br />vczh.lsbandar(14735407)&nbsp;&nbsp;19:16:32<br />特别是你只用scope的时候&nbsp;<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:16:32<br />criticalsection<br />&nbsp;<br />就是为了让你这么用的<br />&nbsp;<br />还有，windows有些东西是有own的概念的<br />&nbsp;<br />ooseven(147340642)&nbsp;&nbsp;19:16:54<br />如果这不算bug，允许这样的设计的话，那么锁两次也不够啊<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:16:54<br />譬如mutex<br />&nbsp;<br />你一个线程得到了一个mutex<br />&nbsp;<br />这个mutex就挂在你的线程下面了<br />&nbsp;<br />这个时候你可以不断地得到她<br />&nbsp;<br />也是递归的<br />&nbsp;<br />但是event没有owner<br />&nbsp;<br />所以对于一个autoresetevent<br />&nbsp;<br />vczh.lsbandar(14735407)&nbsp;&nbsp;19:17:26<br />递归锁是重要特性&nbsp;<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:17:27<br />你连续wait两次<br />&nbsp;<br />就会傻逼<br />&nbsp;<br />不然你觉得为什么windows会搞出这么多锁<br />&nbsp;<br />其实他们是不一样的<br />&nbsp;<br />ooseven(147340642)&nbsp;&nbsp;19:18:08<br />一般同一个类里的函数我都会设计一个参数&nbsp;void&nbsp;process(...,&nbsp;bool&nbsp;isLock&nbsp;=&nbsp;true);<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:18:14<br />何苦呢<br />&nbsp;<br />你就用criticalsection<br />&nbsp;<br />无论如何enter一把<br />&nbsp;<br />多省事<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;19:18:53<br />ooseven(147340642)&nbsp;&nbsp;19:18:08<br />一般同一个类里的函数我都会设计一个参数&nbsp;void&nbsp;process(...,&nbsp;bool&nbsp;isLock&nbsp;=&nbsp;true);<br /><br />这个思路不错偷懒了<br />ooseven(147340642)&nbsp;&nbsp;19:18:42<br />那两次也不够用啊<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;19:19:01<br />但是出错搞起来也更加苦逼了<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:18:47<br />不是两次<br />&nbsp;<br />vczh.lsbandar(14735407)&nbsp;&nbsp;19:18:50<br />傻逼&nbsp;<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:18:53<br />是不受限制的<br />&nbsp;<br />你enter100次<br />&nbsp;<br />也没问题<br />&nbsp;<br />vczh.lsbandar(14735407)&nbsp;&nbsp;19:18:58<br />你想什么呢都&nbsp;<br />ooseven(147340642)&nbsp;&nbsp;19:19:02<br />哦，了解了<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:19:03<br />谁他妈会有个2<br />&nbsp;<br />只要你也leav&nbsp;100ci就好了<br />&nbsp;<br />多2<br />&nbsp;<br />ooseven(147340642)&nbsp;&nbsp;19:19:13<br />今天又有收获，哈<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:19:15<br />就算你要给个上限<br />&nbsp;<br />那也得是9！<br />&nbsp;<br />ooseven(147340642)&nbsp;&nbsp;19:19:57<br />windows下所有的锁都是同一线程下不锁吗？<br />vczh.lsbandar(14735407)&nbsp;&nbsp;19:19:58<br />一定要有递归锁&nbsp;<br />用起来才舒服&nbsp;<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:20:34<br />不是<br />&nbsp;<br />event就不是&#8220;锁&#8221;<br />&nbsp;<br />递归一下就所思自己了<br />&nbsp;<br />semaphore也不是递归的<br />&nbsp;<br />所以semaphore(max=1)并不等于mutex<br />&nbsp;<br />而criticalsection和mutex的区别是<br />&nbsp;<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:21:39<br />cs带spin而且不能跨进程<br />&nbsp;<br />vczh.lsbandar(14735407)&nbsp;&nbsp;19:21:52<br />凡是信号模型的&nbsp;<br />都是不能重入的&nbsp;<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:22:12<br />而semaphore(max=1)勉强跟auto&nbsp;reset&nbsp;event一样<br />&nbsp;<br />vczh.lsbandar(14735407)&nbsp;&nbsp;19:22:19<br />比如vc的例子&nbsp;<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:22:21<br />但是auto&nbsp;reset只是普通event的一个属性<br />&nbsp;<br />所以这些东西都是不能互相替代的<br />&nbsp;<br />vczh.lsbandar(14735407)&nbsp;&nbsp;19:22:38<br />但是所有的资源锁都能重入&nbsp;<br />ooseven(147340642)&nbsp;&nbsp;19:22:51<br />我基本只用Cristalsection<br />vczh.lsbandar(14735407)&nbsp;&nbsp;19:22:52<br />还有就是&nbsp;<br />cs只能匿名&nbsp;<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:23:02<br />用cs你就不需要islock参数了，直接干掉他<br />&nbsp;<br />随便你锁<br />&nbsp;<br />从未来&#8207;̶过&#8234;(815330718)&nbsp;&nbsp;19:23:12<br />加锁两次,就要解锁两次<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:23:41<br />解锁两次就两次<br />&nbsp;<br />不就是把一个变量从1设置为0吗<br />&nbsp;<br />会有多慢<br />&nbsp;<br />（逃<br />&nbsp;<br />ooseven(147340642)&nbsp;&nbsp;19:24:36<br />我只管加锁，不管解锁，解锁都交给析构函数了<br />从未来&#8207;̶过&#8234;(815330718)&nbsp;&nbsp;19:24:41<br />我是说锁&nbsp;重入.<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:24:52<br />卧槽<br />&nbsp;<br />加锁跟解锁<br />&nbsp;<br />当然是构造函数一个<br />&nbsp;<br />析构函数一个了<br />&nbsp;<br />你居然<br />&nbsp;<br />ooseven(147340642)&nbsp;&nbsp;19:25:12<br />我是说不手动解锁<br />从未来&#8207;̶过&#8234;(815330718)&nbsp;&nbsp;19:25:44<br />那你手动加锁...加了两次,只能解锁一次了..<br />ooseven(147340642)&nbsp;&nbsp;19:26:00<br />不会啊，构造两次，当然就析构两次<br />AutoLock&nbsp;Lock(Cristalsection);<br />以后就不管了<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:26:46<br />所以你那个islock参数<br />&nbsp;<br />就这么干掉吧<br />&nbsp;<br />ooseven(147340642)&nbsp;&nbsp;19:27:04<br />嗯，以前还不知道有这特性<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;19:29:46<br />condition&nbsp;和&nbsp;mutex<br />分别适应的场合<br /><img alt="" src="file:///C:/DOCUME~1/cail/LOCALS~1/Temp/D219I~2DS$$G]AGAU2Z6XDM.gif" /><br />今天他又学了不少东西<br />膜拜<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:29:53<br />condition&nbsp;variable是一个牛逼的东西<br />&nbsp;<br />一定要掌握<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;19:30:34<br />我们这边队友&nbsp;wait_condition之前<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:30:15<br />回家<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;19:30:41<br />不锁mutex<br />从未来&#8207;̶过&#8234;(815330718)&nbsp;&nbsp;19:30:21<br />condition&nbsp;variable&nbsp;不会<img alt="" src="file:///C:/DOCUME~1/cail/LOCALS~1/Temp/D219I~2DS$$G]AGAU2Z6XDM.gif" /><br />&nbsp;<br /><br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;19:30:48<br />求解释<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:30:28<br />不是啊<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;19:30:54<br />这是不要吐槽<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:30:37<br />condition是和cs<br />&nbsp;<br />一起用的啊<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;19:31:15<br /><img alt="" src="file:///E:/职场修炼术/QQ/85126585/Image/Image16/HY)ZO7GDOQ)]Q8H(Q%7D8WQ~S.gif" />不是和mutex一起的么<br />api参数都是这样<br />vczh.lsbandar(14735407)&nbsp;&nbsp;19:31:10<br />和event一起&nbsp;<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:31:11<br />api名字我忘了但是大概就是<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;19:31:33<br />condition_wait的时候要给一个mutex进去<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;19:31:25<br />WaitForConditionVariableCS/SRW(condition,&nbsp;cs/srw)<br />&nbsp;<br />没有mutex<br />&nbsp;<br />回家<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;19:32:14<br />囧 <br /><br /><br />condition是和cs一起用很爽，应为CS可以不需要在mutex保护下</div><img src ="http://www.cppblog.com/Error/aggbug/197660.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2013-01-31 19:33 <a href="http://www.cppblog.com/Error/articles/197660.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>虚基类的讨论</title><link>http://www.cppblog.com/Error/articles/197634.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Wed, 30 Jan 2013 08:57:00 GMT</pubDate><guid>http://www.cppblog.com/Error/articles/197634.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/197634.html</wfw:comment><comments>http://www.cppblog.com/Error/articles/197634.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/197634.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/197634.html</trackback:ping><description><![CDATA[<!--StartFragment -->

<div>VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:27:19<br />class&nbsp;IRoot&nbsp;&nbsp;没有虚析构<br />class&nbsp;Lv1&nbsp;&nbsp;有虚析构<br />class&nbsp;Lv2<br /><br />root是根，下面都是继承关系<br />这样有风险没？<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:25:41<br />这样你delete&nbsp;IRoot<br />&nbsp;<br />有<br />&nbsp;<br />就不会运行析构函数<br />&nbsp;<br />C++一切没有父类的类，只要是你打算被继承，都要由虚析构函数<br />&nbsp;<br />董一凡(65226002)&nbsp;&nbsp;16:26:10<br />让他们全部private&nbsp;继承自IRoot<br /><br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:28:04<br />有没啥好办法<br /><br />我不想在徐基类中<br />搞函数体实现<br />好丑<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:26:28<br />private继承也没用<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:28:29<br />那怎么办<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:26:37<br />说不定那个IRoot就是那个类自己给出去的<br />&nbsp;<br />而且就算你private了<br />&nbsp;<br />dynamic_cast也是可以用的<br />&nbsp;<br />董一凡(65226002)&nbsp;&nbsp;16:26:55<br />那无所谓了啊<br /><br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:26:56<br />你只要在IRoot写一个空的虚析构函数就行了<br />&nbsp;<br />别的什么都不需要干<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:29:01<br />但是这样如果跨模块<br />董一凡(65226002)&nbsp;&nbsp;16:27:24<br />如果你case到了派生类，那自然就会调用正确的析构函数了<br /><br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:29:19<br />iroot相当于编译了两次<br />vczh.xyz粉(54438159)&nbsp;&nbsp;16:27:44<br /><img src="file:///C:/DOCUME~1/cail/LOCALS~1/Temp/]F%7BS%25KHON132NOE%60VB([Z[2.gif" sysface="3"  alt="" /><br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:27:46<br />不会的<br />&nbsp;<br />董一凡(65226002)&nbsp;&nbsp;16:27:52<br />准确的说，析构函数要么是公有虚的，或者protected非虚的<br /><br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:27:53<br />你把实现写在了cpp文件里面<br />&nbsp;<br />就不会被编译两次了<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:30:06<br />那如果两个模块<br />同时需要iroot<br />董一凡(65226002)&nbsp;&nbsp;16:28:32<br />只要你不用基类来delete派生类，那析构函数不需要是虚的<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:30:26<br />就要都加入cpp<br />C++的什么东西都差一点，不完美啊<br />VCZH.粉丝数组[5](110086478)&nbsp;&nbsp;16:31:03<br />准确的说，析构函数要么是公有虚的，或者protected非虚的<br />effective上看到过，后一种一般什么时候用到&nbsp;<br />vczh四号粉丝(342775210)&nbsp;&nbsp;16:31:14<br />加一个虚析构,又没啥<br />VCZH.粉丝数组[5](110086478)&nbsp;&nbsp;16:31:49<br />其实可以让编译器做的&nbsp;<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:32:06<br />加一个虚析构,又没啥&nbsp;&nbsp;<br />VCZH.粉丝数组[5](110086478)&nbsp;&nbsp;16:32:25<br />只要有继承，编译器就让析够，多省心&nbsp;<br />董一凡(65226002)&nbsp;&nbsp;16:32:42<br />后一种就是，你永远不能用基类指针来delete派生类<br /><br />所以析构函数也就不用是虚的了<br />VCZH.粉丝数组[5](110086478)&nbsp;&nbsp;16:33:11<br />比如？场景？看得忘了&nbsp;<br />董一凡(65226002)&nbsp;&nbsp;16:34:29<br />比如你有一大组不同的接口，class&nbsp;A&nbsp;:&nbsp;public&nbsp;I1,&nbsp;public&nbsp;I2,&nbsp;public&nbsp;I3{}<br />你有写函数是这样子的，fun(I1*&nbsp;i)&nbsp;fun2(I2*&nbsp;i)&nbsp;fun3(I3*&nbsp;i)<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:37:29<br />当智能指针遇到这个事情<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:35:33<br />我所有的类都继承自Object<br />&nbsp;<br />董一凡(65226002)&nbsp;&nbsp;16:35:36<br />你的fun只不过是调用几个接口，而不会管理实际对象的生命周期，那这样设计就是合理的<br /><br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:35:38<br />所有的接口都继承自Interface<br />&nbsp;<br />他们都有虚析构函数<br />&nbsp;<br />我为了解决这个问题<br />&nbsp;<br />然后就没问题了<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:38:12<br />嗯，想这样一个对象<br />作为多个接口<br />扩散到不同模块<br />偶就用shared_ptr了<br />老残搞不定复杂的生命周期管理<br />VCZH.粉丝数组[5](110086478)&nbsp;&nbsp;16:37:00<br />java啊&nbsp;<br />vczh四号粉丝(342775210)&nbsp;&nbsp;16:37:12<br />真的是闲的蛋疼啊<br />加一个虚析构,又能怎么样<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:39:29<br /><img src="file:///E:/职场修炼术/QQ/85126585/Image/Image16/HY)ZO7GDOQ)]Q8H(Q%7D8WQ~S.gif"  alt="" />好丑的，，，<br />VCZH.粉丝数组[5](110086478)&nbsp;&nbsp;16:37:36<br />其实我们游戏服务器也是用一个object的&nbsp;<br />vczh四号粉丝(342775210)&nbsp;&nbsp;16:37:43<br />只要碰到继承,就必须虚析构<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:40:25<br />比如你动态库<br />提供某个接口<br />董一凡(65226002)&nbsp;&nbsp;16:38:38<br />哎，比如你的接口本本来就只是几个函数。连成员都没有，那干嘛还加个虚析构，去加一个指针大小呢<br /><br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:40:49<br />然后又是显示加载<br />董一凡(65226002)&nbsp;&nbsp;16:38:58<br />尤其是编译器对这种类还能够直接优化掉<br /><br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:41:16<br />这样虽然那个虚析构是空的<br />但是实际上<br />exe和dll里边<br />都有一份实现<br />我理解的没错吧<br />我觉得这个现象<br />不好<br />vczh.xyz粉(54438159)&nbsp;&nbsp;16:40:32<br /><img src="file:///C:/DOCUME~1/cail/LOCALS~1/Temp/ISLZT%60Q$@7Z85N$JT99OQAW.gif" sysface="106"  alt="" /><br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:43:02<br />囧，我再去好好理解理解去<br />应该如果只用指针<br />是可以只有一份实现的<br />董一凡(65226002)&nbsp;&nbsp;16:41:24<br />v大，你既然所有类继承自object，那你在做ui的时候，大可以模范qt了，在基类里加一个slot的概念，所有ui对象就都可以接收发过来的消息了<br /><br />跨dll就千万要小心了，你别在dll里new东西，在另一个dll里delete，会出错的<br /><br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:44:22<br />跨dll就千万要小心了，你别在dll里new东西，在另一个dll里delete，会出错的<br /><br />这个不一定出错<br />和运行库相关<br />董一凡(65226002)&nbsp;&nbsp;16:42:57<br />嗯，对的，但这是一个当地晦涩的角落<br /><br />一起搞明白，最好的办法是避免<br />ooseven(147340642)&nbsp;&nbsp;16:43:08<br />我都是用heapalloc，没有这个顾虑<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:45:15<br />流氓<br />话说vs2012以后<br />运行库就是用heapalloc了<br />所以<br />这个问题，不是问题了<br />ooseven(147340642)&nbsp;&nbsp;16:43:51<br />是吗？<br />你确定？<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:45:58<br />如果我没记错<br />好像在哪看到过<br />VCZH.粉丝数组[5](110086478)&nbsp;&nbsp;16:44:19<br />exe和dll会各有一份？&nbsp;<br />ooseven(147340642)&nbsp;&nbsp;16:44:43<br />我重载了所有的容器，传入一个自己的Allocator&lt;_Kty&gt;<br />这个Allocator&lt;_Kty&gt;，里面就是heapalloc<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:47:24<br />显示加载dll<br />就是说，dll的代码和exe的代码是分开的<br />假设exe和dll里边有相同的对象<br />那么他们必须都包含虚基类的完整实现<br />也就是说虚基类在exe和dll里边<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:48:29<br />分别都编译了一次<br />那么exe和dll里边关于虚基类的机器码<br />就有相同的两份<br /><img src="file:///E:/职场修炼术/QQ/85126585/Image/Image16/HY)ZO7GDOQ)]Q8H(Q%7D8WQ~S.gif"  alt="" /><br />vczh四号粉丝(342775210)&nbsp;&nbsp;16:47:28<br />动态链接啊,怎么会有两份代码<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:49:41<br />exe一份&nbsp;dll一份<br />vczh四号粉丝(342775210)&nbsp;&nbsp;16:47:50<br />除非你dll是静态链接的<br />然后有蛋疼的静态链接exe了一份<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:49:56<br />不然肯定链接错误<br />我们遇到过一次bug<br />和这个类似<br />就是单例模式<br />在exe和dll的地址<br />不一样<br />后来发现就是哪个instance<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:51:06<br />在exe和dll各有一份实现<br />VCZH.粉丝数组[5](110086478)&nbsp;&nbsp;16:49:06<br />&nbsp;你那是export吧&nbsp;<br />不用两份代码&nbsp;<br />一份就行&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:51:28<br />只有一份编译都过不了<br />VCZH.粉丝数组[5](110086478)&nbsp;&nbsp;16:49:37<br />直接export就行，单件&nbsp;<br />可以&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:51:56<br />那要把单利放到dll<br />然后隐式加载<br />不然这边exe链接错误<br />VCZH.粉丝数组[5](110086478)&nbsp;&nbsp;16:50:20<br />是的&nbsp;<br />嗯&nbsp;<br />好牛逼&nbsp;<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:50:33<br />董一凡2013-01-30&nbsp;16:41:24v大，你既然所有类继承自object，那你在做ui的时候，大可以模范qt了，在基类里加一个slot的概念，所有ui对象就都可以接收发过来的消息了<br /><br />上一次我也是这么做的，这次戒了<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:52:50<br />为啥<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:50:50<br />singleton<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:52:58<br />不是很爽么<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:51:02<br />出事是肯定的<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:53:15<br /><img src="file:///E:/职场修炼术/QQ/85126585/Image/Image16/HY)ZO7GDOQ)]Q8H(Q%7D8WQ~S.gif"  alt="" /><br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:51:21<br />你暴露个变量出来<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:53:45<br />单例是恶习<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:51:41<br />都是要做成函数的<br />&nbsp;<br />vczh四号粉丝(342775210)&nbsp;&nbsp;16:51:42<br />我发现,public成员是bug神器<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:52:04<br />gacui很少有public的变量<br />&nbsp;<br />vczh四号粉丝(342775210)&nbsp;&nbsp;16:52:31<br />我刚才秒了一下我们的代码,就发现一个内存泄露<br />我都不敢看了<br />vczh.xyz粉(54438159)&nbsp;&nbsp;16:52:46<br />这个。。。<br />VCZH.粉丝数组[5](110086478)&nbsp;&nbsp;16:53:03<br />太厉害了&nbsp;<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:53:07<br />发邮件喷<br />&nbsp;<br />vczh四号粉丝(342775210)&nbsp;&nbsp;16:53:13<br />我才不喷<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:55:21<br />vczh四号粉丝(342775210)&nbsp;&nbsp;16:52:31<br />我刚才秒了一下我们的代码,就发现一个内存泄露<br />我都不敢看了<br /><br />你们平时怎么查内存溢出&nbsp;内存错误&nbsp;内存泄漏什么的？<br />vczh四号粉丝(342775210)&nbsp;&nbsp;16:53:32<br />我们平时靠人肉看<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:55:38<br />vczh四号粉丝(342775210)&nbsp;&nbsp;16:53:13<br />我才不喷<br /><br />喷了就要解决，，，解决就要加班，，，要死，，，<br />vczh四号粉丝(342775210)&nbsp;&nbsp;16:53:44<br />对<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:53:46<br />看source&nbsp;control，谁写的谁解决<br />&nbsp;<br />vczh四号粉丝(342775210)&nbsp;&nbsp;16:53:55<br />不是我写的<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:54:05<br />赖都赖不掉<br />&nbsp;<br />vczh四号粉丝(342775210)&nbsp;&nbsp;16:54:06<br />就行了<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:56:22<br />我估计这个问题该起来牵扯一票模块，，，<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:54:26<br />visual&nbsp;studio打开以下咦annotate哪一行谁checkin进去的直接暴露出来<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:56:33<br />不然你就爽快的改了喷人，，，<br />SundayTooFar(5048977)&nbsp;&nbsp;16:54:31<br /><img src="file:///C:/DOCUME~1/cail/LOCALS~1/Temp/6ZD$%25HBUZ[H~@Y(R%7B46]9%601.gif" sysface="98"  alt="" />上个项目，&nbsp;我秒了一下rpc协议。&nbsp;结果发现几十个严重问题。&nbsp;那才闹腾，&nbsp;整个项目组加班了两周。。<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:54:43<br />=&nbsp;=<br />&nbsp;<br />web程序<br />&nbsp;<br />你不招vczh<br />&nbsp;<br />就不能用C++来写（逃<br />&nbsp;<br />VCZH.粉丝数组[5](110086478)&nbsp;&nbsp;16:55:00<br /><img src="file:///C:/DOCUME~1/cail/LOCALS~1/Temp/M~JCXC1J~%7DF8$PM4BBBN1QD.gif" sysface="9"  alt="" />&nbsp;<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:55:12<br />用C++来处理字符串<br />&nbsp;<br />需要有坚定的信念<br />&nbsp;<br />vczh.xyz粉(54438159)&nbsp;&nbsp;16:55:20<br />各位巨巨都是神眼阿<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:55:20<br />每一行代码都要充满智慧<br />&nbsp;<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:57:26<br />搞死人<br />vczh四号粉丝(342775210)&nbsp;&nbsp;16:55:31<br />要改的代码,也不多<br />只是我不愿意改<br />VCZH.粉丝数组[0]&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:57:49<br />上午问了没人理我，asn1有熟的没<br />vczh四号粉丝(342775210)&nbsp;&nbsp;16:55:43<br />改了,他又会改回来<br />vczh.Iskandar&lt;vczh@163.com&gt;&nbsp;&nbsp;16:55:44<br />先改后喷<br />&nbsp;<br />没有<br />&nbsp;<br /></div><img src ="http://www.cppblog.com/Error/aggbug/197634.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2013-01-30 16:57 <a href="http://www.cppblog.com/Error/articles/197634.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CreateFile  WriteFile 都会正常,但是结果异常</title><link>http://www.cppblog.com/Error/articles/166096.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Mon, 20 Feb 2012 15:49:00 GMT</pubDate><guid>http://www.cppblog.com/Error/articles/166096.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/166096.html</wfw:comment><comments>http://www.cppblog.com/Error/articles/166096.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/166096.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/166096.html</trackback:ping><description><![CDATA[<div><div>&nbsp;南昌-贝贝(1125591)&nbsp;&nbsp;23:37:59<br />我写的文件下载模块,他们就是用不了,<br />还说我写的有问题,我忙没时间关心他们,<br />&nbsp;&nbsp;他们弄了一个下午没弄好<br />结果拿到我手上,一下就火了<br />保存的文件名里面的冒号<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;23:38:51<br />，，，<br />囧，，，<br />南昌-贝贝(1125591)&nbsp;&nbsp;23:39:08<br />这种错我想这里应该没多少人能犯得出来吧<br />福建-双生(329015523)&nbsp;&nbsp;23:39:26<br />一个给一巴掌，，再问问会不会疼<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;23:39:15<br />这是多少年道行的错误<br />南昌-贝贝(1125591)&nbsp;&nbsp;23:39:39<br />搞编程的不知道文件名不能含有冒号<br />还几个人在那搞,&nbsp;不知道所以然<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;23:43:35<br />这个我好也没怎么留意过<br />不过应该可以根据GetLastError<br />发现吧<br />南昌-贝贝(1125591)&nbsp;&nbsp;23:44:08<br />有冒号&nbsp;CreateFile&nbsp;&nbsp;WriteFile&nbsp;都会正常<br />不过会写到天上去<br />所以他们调不出来,这个估计没多少人知道<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;23:44:49<br />恩这个要记下来，不然以后说不准哪天忘记了<br />福建-双生(329015523)&nbsp;&nbsp;23:45:24<br /><img src="file:///D:\Program Files (x86)\Tencent\QQ\PersonalData\85126585\Image\Image1\C([FT{R}87H4GH5F}H)}[~U.gif"  alt="" />不然哪天你也被骂了。。。</div></div><img src ="http://www.cppblog.com/Error/aggbug/166096.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2012-02-20 23:49 <a href="http://www.cppblog.com/Error/articles/166096.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>由系统mutex的最大数量，到异常的深入探讨（VC专业群3）</title><link>http://www.cppblog.com/Error/articles/163374.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Sun, 01 Jan 2012 18:10:00 GMT</pubDate><guid>http://www.cppblog.com/Error/articles/163374.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/163374.html</wfw:comment><comments>http://www.cppblog.com/Error/articles/163374.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/163374.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/163374.html</trackback:ping><description><![CDATA[<div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 0:46:50&nbsp;</div><div>我来试试最多能有几个锁&nbsp;</div><div>吉林-小伙 &nbsp;0:47:11&nbsp;</div><div>我觉得好多好多&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 0:50:51&nbsp;</div><div>99999貌似不压力&nbsp;</div><div>吉林-小伙 &nbsp;0:51:07&nbsp;</div><div>这个mutex是内核管理的&nbsp;</div></div><div><div><div>&nbsp;吉林-小伙&nbsp;&nbsp;0:51:57<br />算了&nbsp;不瞎扯了<br />吉林-小伙&nbsp;&nbsp;0:51:58<br />呵呵<br />吉林-小伙&nbsp;&nbsp;0:52:11<br />我慢慢学吧<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:52:09<br /><img src="file:///D:\Program Files (x86)\Tencent\QQ\PersonalData\85126585\Image\]m~]nx{9u(8r@[5_(@_dtze.jpg" alt="" /><br />这样就异常了<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:52:17<br />偶来看看啥异常<br />吉林-小伙&nbsp;&nbsp;0:52:29<br />内存不够了<br />吉林-小伙&nbsp;&nbsp;0:52:27<br />你这是new太多了<br />吉林-小伙&nbsp;&nbsp;0:53:02<br />异常是&nbsp;outofmemory<br />吉林-小伙&nbsp;&nbsp;0:53:06<br /><img src="file:///C:\Users\Error\AppData\Local\Temp\X@8}U9MLE}EBUE273)]9PGF.gif" sysface="13" alt="" /><br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:53:07<br />应该不是<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:54:21<br />被你说中了<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:54:27<br />bad&nbsp;allocation<br />吉林-小伙&nbsp;&nbsp;0:54:39<br />呵呵<br />吉林-小伙&nbsp;&nbsp;0:54:53<br />这样看来<br />吉林-小伙&nbsp;&nbsp;0:54:57<br />只要内存够用<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:54:57<br /><img src="file:///C:\Users\Error\AppData\Local\Temp\[{3Z]U}(T(K%$A2[_$5RF`T.gif" alt="" />最近发现异常比返回值好用多了<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:55:10<br />mutex数量，这个问题我以后不应该纠结了<br />吉林-小伙&nbsp;&nbsp;0:55:17<br />就能申请好多<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:55:24<br />说到底就是一条汇编指令<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:55:47<br />操作系统会缓冲下&nbsp;id啥的<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:56:19<br />昨天一个多线程的代码，用了三方线程库，线程中不敢直接调用exitthread<br />吉林-小伙&nbsp;&nbsp;0:56:35<br />怕内存泄露？<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:56:44<br />结果一个错误先直接退出线程，连续改了几层函数<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:56:51<br />void改成bool<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:57:09<br />后来&nbsp;直接throw&nbsp;一下<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:57:19<br />线程主函数catch一下<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:57:28<br />nnd&nbsp;&nbsp;多简洁啊<br />吉林-小伙&nbsp;&nbsp;0:57:38<br />异常处理影响效率啊<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:57:51<br />比每个函数后面跟一个assert&nbsp;一个if舒服多了<br />吉林-小伙&nbsp;&nbsp;0:58:04<br />呵呵<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:58:12<br />对了<br />吉林-小伙&nbsp;&nbsp;0:58:09<br />泡泡鱼告诉我<br />吉林-小伙&nbsp;&nbsp;0:58:21<br />你用异常处理&nbsp;那是你代码写的有问题<br />吉林-小伙&nbsp;&nbsp;0:58:31<br />正常情况下不用try&nbsp;catch<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:58:36<br />异常处理不影响正常流程的效率吧<br />吉林-小伙&nbsp;&nbsp;0:58:53<br />影响<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:58:55<br />那确实是有问题，发现一个不可恢复的错误<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:59:17<br />要么直接退出<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:59:23<br />要么泡异常<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:59:39<br />囧，，，<br /><br />boost的正则<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:59:46<br />这么说来就是狗屎了<br />吉林-小伙&nbsp;&nbsp;0:59:50<br />more&nbsp;effective&nbsp;c++&nbsp;里好像说了异常处理的效率问题了<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;0:59:56<br />到处异常，基本不靠返回值<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:00:02<br />我看看汇编代码<br />吉林-小伙&nbsp;&nbsp;1:00:07<br />嗯<br />吉林-小伙&nbsp;&nbsp;1:00:15<br />想想异常处理的原理<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:00:24<br />我觉得没啥<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:00:31<br />编译器完全可以处理吧<br />吉林-小伙&nbsp;&nbsp;1:01:12<br />你看看汇编代码<br />吉林-小伙&nbsp;&nbsp;1:02:27<br />经测试，在C＋＋里面加个try以后性能下降了百多倍<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:02:33<br />多了几个jmp<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:02:42<br />你测过了？<br />吉林-小伙&nbsp;&nbsp;1:03:09<br />你用for&nbsp;然后里边写个try&nbsp;catch<br />吉林-小伙&nbsp;&nbsp;1:04:13<br />我觉得一定会低效的<br />吉林-小伙&nbsp;&nbsp;1:05:20<br />因为为了捕捉到异常以后<br />吉林-小伙&nbsp;&nbsp;1:05:24<br />仍然能堆栈平衡<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:05:28<br />try<br />{<br />00EC2390&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte&nbsp;ptr&nbsp;[ebp-4],1<br />int&nbsp;i&nbsp;=&nbsp;0;<br />00EC2394&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword&nbsp;ptr&nbsp;[i],0<br />}<br />00EC239B&nbsp;&nbsp;jmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__catch$_wmain$0+14h&nbsp;(0EC23B1h)<br />catch(...)<br />{<br />int&nbsp;i&nbsp;=&nbsp;0;<br />00EC239D&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword&nbsp;ptr&nbsp;[i],0<br />}<br />00EC23A4&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword&nbsp;ptr&nbsp;[ebp-4],0<br />00EC23AB&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax,offset&nbsp;__tryend$_wmain$1&nbsp;(0EC23B8h)<br />00EC23B0&nbsp;&nbsp;ret<br /><br />00EC23B1&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword&nbsp;ptr&nbsp;[ebp-4],0<br />}<br />00EC23B8&nbsp;&nbsp;jmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wmain+51h&nbsp;(0EC2381h)<br />00EC23BA&nbsp;&nbsp;jmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__catch$_wmain$4+38h&nbsp;(0EC24C3h)<br />吉林-小伙&nbsp;&nbsp;1:05:30<br />正常结束程序<br />吉林-小伙&nbsp;&nbsp;1:05:40<br />就必须要加入一些数据结构<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:05:42<br />是一个长jmp&nbsp;<br /><div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:05:50&nbsp;</div><div>编译器干的&nbsp;</div><div>吉林-小伙 &nbsp;1:05:59&nbsp;</div><div>对啊&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:06:13&nbsp;</div><div>如果没有异常，直接jmp到后面了&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:06:23&nbsp;</div><div>就多了这一条指令&nbsp;</div><div>吉林-小伙 &nbsp;1:06:33&nbsp;</div><div>你看的是表面&nbsp;</div><div>吉林-小伙 &nbsp;1:06:39&nbsp;</div><div>jmp之后呢？&nbsp;</div><div>吉林-小伙 &nbsp;1:06:54&nbsp;</div><div>正常 stdcall的函数 是在函数内部堆栈平衡的&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:07:01&nbsp;</div><div>之后是后面正常的代码&nbsp;</div><div>吉林-小伙 &nbsp;1:07:02&nbsp;</div><div>这个你不否认吧&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:07:07&nbsp;</div><div>jmp没有call吧&nbsp;</div><div>吉林-小伙 &nbsp;1:07:21&nbsp;</div><div>你先别看那个汇编&nbsp;</div><div>吉林-小伙 &nbsp;1:07:25&nbsp;</div><div>听我说&nbsp;</div><div>吉林-小伙 &nbsp;1:07:26&nbsp;</div><div>呵呵&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:07:29&nbsp;</div><div>恩&nbsp;</div><div>吉林-小伙 &nbsp;1:07:37&nbsp;</div><div>正常我们调用一个函数&nbsp;</div><div>吉林-小伙 &nbsp;1:07:50&nbsp;</div><div>是stdcall 这个函数执行完毕的时候&nbsp;</div><div>吉林-小伙 &nbsp;1:08:02&nbsp;</div><div>要堆栈平衡一下 例如ret 8&nbsp;</div><div>吉林-小伙 &nbsp;1:08:33&nbsp;</div><div>这样才能保证函数退出后依然能正确执行代码&nbsp;</div><div>吉林-小伙 &nbsp;1:08:43&nbsp;</div><div>如果我们的函数中存在异常&nbsp;</div><div>吉林-小伙 &nbsp;1:08:58&nbsp;</div><div>就执行不到ret 8了&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:09:13&nbsp;</div><div>我说的是正常流程&nbsp;</div><div>吉林-小伙 &nbsp;1:09:23&nbsp;</div><div>哦 &nbsp;</div><div>吉林-小伙 &nbsp;1:09:28&nbsp;</div><div>懂你的意思了&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:09:50&nbsp;</div><div>我用异常是难得一层一层加返回值判断了&nbsp;</div><div>吉林-小伙 &nbsp;1:09:48&nbsp;</div><div>不管是什么流程&nbsp;</div><div>吉林-小伙 &nbsp;1:10:20&nbsp;</div><div>是不是要先弄个数据结构来保存下一些信息呢？&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:10:32&nbsp;</div><div>就是throw的&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:10:44&nbsp;</div><div>throw就是一个call了 好像&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:10:48&nbsp;</div><div>我去看看&nbsp;</div><div>吉林-小伙 &nbsp;1:10:50&nbsp;</div><div>嗯&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:12:11&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; throw(i);</div><div>002C237B &nbsp;mov &nbsp; &nbsp; &nbsp; &nbsp; eax,dword ptr [i]&nbsp;</div><div>002C237E &nbsp;mov &nbsp; &nbsp; &nbsp; &nbsp; dword ptr [ebp-148h],eax&nbsp;</div><div>002C2384 &nbsp;push &nbsp; &nbsp; &nbsp; &nbsp;offset __TI1H (2D8540h)&nbsp;</div><div>002C2389 &nbsp;lea &nbsp; &nbsp; &nbsp; &nbsp; ecx,[ebp-148h]&nbsp;</div><div>002C238F &nbsp;push &nbsp; &nbsp; &nbsp; &nbsp;ecx &nbsp;</div><div>002C2390 &nbsp;call &nbsp; &nbsp; &nbsp; &nbsp;@ILT+1225(__CxxThrowException@8) (2C14CEh) &nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:12:15&nbsp;</div><div>就是了&nbsp;</div><div>吉林-小伙 &nbsp;1:12:24&nbsp;</div><div>嗯&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:13:02&nbsp;</div><div>囧，，，&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:13:07&nbsp;</div><div>汇编果然是好东西&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:13:55&nbsp;</div><div>看了评测&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:14:14&nbsp;</div><div>win上的异常要损失130倍&nbsp;</div><div>吉林-小伙 &nbsp;1:14:14&nbsp;</div><div>什么评测？&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:14:16&nbsp;</div><div>性能&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:14:24&nbsp;</div><div>异常发生&nbsp;</div><div>吉林-小伙 &nbsp;1:14:38&nbsp;</div><div>不发生呢？&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:14:46&nbsp;</div><div>1%&nbsp;</div><div>吉林-小伙 &nbsp;1:14:50&nbsp;</div><div>不发生就多点内存？&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:14:51&nbsp;</div><div>Linux是0&nbsp;</div><div>吉林-小伙 &nbsp;1:14:57&nbsp;</div><div>那就不错了&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:15:00&nbsp;</div><div>aix比不用还要快一点&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:15:02&nbsp;</div><div>囧&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:15:37&nbsp;</div><div>应该是运行库觉得的&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:15:44&nbsp;</div><div>这个玩深了&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:15:49&nbsp;</div><div>艹，搞不定了&nbsp;</div><div>吉林-小伙 &nbsp;1:16:05&nbsp;</div><div>我给你翻翻权威书籍吧&nbsp;</div><div>吉林-小伙 &nbsp;1:16:07&nbsp;</div><div>哈哈&nbsp;</div><div>吉林-小伙 &nbsp;1:16:45&nbsp;</div><div>擦 今天书翻不了了&nbsp;</div><div>吉林-小伙 &nbsp;1:16:49&nbsp;</div><div>让隔壁的人拿走了&nbsp;</div><div>吉林-小伙 &nbsp;1:16:59&nbsp;</div><div>more effective c++&nbsp;</div><div>吉林-小伙 &nbsp;1:17:07&nbsp;</div><div>这里专门讲了异常&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:17:09&nbsp;</div><div>http://blog.codingnow.com/2005/12/cpp_exception.html&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:17:35&nbsp;</div><div>我有印象那书&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:17:55&nbsp;</div><div>但是在汇编面前是没有秘密的，，，囧，，，明天好好分析下&nbsp;</div><div>深圳-Enic&lt;errorcpp@qq.com&gt; 1:18:16&nbsp;</div><div>当时讲师前半段一直在讲 SEH ，和 C++ 关系不大。我本以为会讲 C++ 异常的实现的，我个人以前研究过一些，很有兴趣听听人家的理解，结果没有听到。据说后来那个会场最终吵了起来，很遗憾没有领略那个盛况 :)</div><div><div><div>&nbsp;吉林-小伙&nbsp;&nbsp;1:19:45<br />呵呵<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:21:01<br />程序中大量使用异常的，绝对不是为了提高程序的稳定性，或是可笑的提高可读性，那都是忽悠外行的。使用异常原因只有一个：偷懒！<br /><br /><br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:21:08<br />深表赞同，，，<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:21:14<br />想少些代码<br />吉林-小伙&nbsp;&nbsp;1:21:19<br />呵呵<br />吉林-小伙&nbsp;&nbsp;1:21:29<br />泡泡鱼是个高手啊<br />吉林-小伙&nbsp;&nbsp;1:21:34<br />可惜啊<br />吉林-小伙&nbsp;&nbsp;1:21:41<br />这小子总是丢一句就跑<br />吉林-小伙&nbsp;&nbsp;1:22:48<br />按道理来讲c++&nbsp;happy&nbsp;path的时候&nbsp;应该效率高的啊<br />吉林-小伙&nbsp;&nbsp;1:22:56<br />毕竟不用返回值判断了<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:23:10<br />看异常实现了<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:23:25<br />这个是运行期间的事件<br />吉林-小伙&nbsp;&nbsp;1:23:30<br />嗯<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:23:43<br />throw一下要去找catch<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:23:47<br />估计时间就在这里<br />吉林-小伙&nbsp;&nbsp;1:24:03<br />这个是&nbsp;unhappy了<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:24:05<br />我刚刚的例子是给编译器优化掉了<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:24:13<br />直接call了<br />吉林-小伙&nbsp;&nbsp;1:24:13<br />unhappy&nbsp;path<br />吉林-小伙&nbsp;&nbsp;1:24:15<br />哦&nbsp;哦<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:24:21<br />这样应该是0开销<br />吉林-小伙&nbsp;&nbsp;1:24:27<br />用g++吧<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:24:47<br />vs用的顺手额<br />吉林-小伙&nbsp;&nbsp;1:24:51<br />看看不优化是什么样的<br />吉林-小伙&nbsp;&nbsp;1:25:11<br />vs关闭优化功能<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:25:13<br />应该是和ssh那一套差不多<br />吉林-小伙&nbsp;&nbsp;1:25:15<br />我心里还是不踏实呢<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:25:33<br />@ILT+1225(__CxxThrowException@8)&nbsp;(2C14CEh)<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:25:38<br />又看了下<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:25:42<br />call的是这个<br />吉林-小伙&nbsp;&nbsp;1:26:02<br />传了两个参数<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:26:09<br />你拿od调看看<br />吉林-小伙&nbsp;&nbsp;1:26:17<br />我没OD了<br />吉林-小伙&nbsp;&nbsp;1:26:19<br />公司电脑<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:26:27<br />搞驱动的，，，<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:26:32<br />没OD？<br />吉林-小伙&nbsp;&nbsp;1:26:43<br />没有啊<br />吉林-小伙&nbsp;&nbsp;1:26:53<br />我现在只会简单的windbg<br />吉林-小伙&nbsp;&nbsp;1:27:00<br />还是双机调试<br />吉林-小伙&nbsp;&nbsp;1:27:19<br />OD能调内核程序？<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:27:43<br />那你用wdbg看看，，，<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:27:51<br />囧，，，我这些太弱了<br />吉林-小伙&nbsp;&nbsp;1:28:15<br />你弄弄<br />吉林-小伙&nbsp;&nbsp;1:28:24<br />我研究虚拟摄像头呢<br />吉林-小伙&nbsp;&nbsp;1:28:28<br />我今天晚上要弄成功共<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:29:37<br />恩，祝你成功<br /><br />我跟了一大段汇编<br />吉林-小伙&nbsp;&nbsp;1:30:11<br /><img src="file:///C:\Users\Error\AppData\Local\Temp\X@8}U9MLE}EBUE273)]9PGF.gif" sysface="13" alt="" /><br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:31:54<br />我决定以后还是不排斥异常<br />吉林-小伙&nbsp;&nbsp;1:32:36<br />看你对代码体积&nbsp;还有效率有没有什么特殊要求了<br />吉林-小伙&nbsp;&nbsp;1:32:43<br />这东西&nbsp;存在就合理<br />吉林-小伙&nbsp;&nbsp;1:32:51<br />必有其用武之地啊<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:33:03<br />实在是少些太多代码的，，，<br />吉林-小伙&nbsp;&nbsp;1:33:20<br />呵呵<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:33:23<br />你不知道，今天我改第一个函数&nbsp;最少改了5层<br />吉林-小伙&nbsp;&nbsp;1:33:30<br />不用返回值&nbsp;不用断言和if<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:33:49<br />asio做的比较好<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:34:10<br />一个功能提供一个异常版和一个返回值版<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:35:00<br />http://www.cnblogs.com/napoleon_liu/archive/2010/10/27/1862240.html<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:35:12<br />这个是分析异常实现机制的<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:35:18<br />你可以明目了</div></div></div><div>&nbsp;&nbsp;吉林-小伙&nbsp;&nbsp;1:35:35</div><div><div>不过记不太清了<br />吉林-小伙&nbsp;&nbsp;1:35:32<br />以前看过<br />吉林-小伙&nbsp;&nbsp;1:35:44<br />好像是和调用堆栈有关系<br />吉林-小伙&nbsp;&nbsp;1:35:50<br />平衡堆栈那些<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:36:08<br />这些开销不会超过一倍的<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:36:44<br />就算不是异常平衡，你自己写返回值一样还是一层一层平衡下去了<br />吉林-小伙&nbsp;&nbsp;1:37:13<br />嗯&nbsp;但是用异常不是需要新的数据结构吗<br />吉林-小伙&nbsp;&nbsp;1:37:17<br />这多了一些开销<br />吉林-小伙&nbsp;&nbsp;1:37:51<br />现在我的水平&nbsp;还不是纠结是否应该用异常的时候<br />吉林-小伙&nbsp;&nbsp;1:37:51<br />呵呵<br />吉林-小伙&nbsp;&nbsp;1:38:02<br />知道个大概就行啦&nbsp;慢慢来吧<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:38:45<br />囧，，，<br />都是被逼的，，，<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:39:07<br />经过今天的事情，我才知道为啥要抛异常<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:39:38<br />你看超大型项目，好几百层的函数调用，，，<br />吉林-小伙&nbsp;&nbsp;1:39:38<br />知道今天&nbsp;你才知道抛出异常是call？<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:39:42<br />艹<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:39:48<br />那直接死了算了<br />吉林-小伙&nbsp;&nbsp;1:40:32<br />你知道抛出异常的那个参数是干啥的不？<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:40:35<br /><img src="file:///C:\Users\Error\AppData\Local\Temp\C9752(0D$AC]XTIC8MY4AOM.gif" alt="" />让你在第999层的函数调用根据一个返回值退出程序<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:40:40<br />不知道<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:40:51<br />结果上面998层都是void<br />吉林-小伙&nbsp;&nbsp;1:40:57<br />呵呵<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:41:00<br /><img src="file:///C:\Users\Error\AppData\Local\Temp\8HCCR1ND`{6ZG)4P4ECX6KO.gif" alt="" /><br />吉林-小伙&nbsp;&nbsp;1:41:04<br />你说的也有道理<br />吉林-小伙&nbsp;&nbsp;1:41:15<br />这个就是架构师设计的不合理了<br />吉林-小伙&nbsp;&nbsp;1:41:35<br />throw&nbsp;那个参数&nbsp;&nbsp;可以传给catch那里<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:41:49<br />压了两个参数<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:41:53<br />还有一个是啥<br />吉林-小伙&nbsp;&nbsp;1:42:02<br />你刚才写的是1吧<br />吉林-小伙&nbsp;&nbsp;1:42:17<br />你写两个<br />吉林-小伙&nbsp;&nbsp;1:42:21<br />看看是不是压了三个<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:43:28<br /><img src="file:///C:\Users\Error\AppData\Local\Temp\8HCCR1ND`{6ZG)4P4ECX6KO.gif" alt="" />你们家异常能一次throw俩参数<br />吉林-小伙&nbsp;&nbsp;1:43:37<br />push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;offset&nbsp;__TI1H&nbsp;(2D8540h)<br />吉林-小伙&nbsp;&nbsp;1:43:57<br />艹<br />吉林-小伙&nbsp;&nbsp;1:44:11<br />从来没用过两个参数<br />吉林-小伙&nbsp;&nbsp;1:44:14<br />不知道是否可以<br />吉林-小伙&nbsp;&nbsp;1:44:25<br />压入了一个首地址<br />吉林-小伙&nbsp;&nbsp;1:44:32<br />TI1H的首地址<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:44:39<br />还有一个后来跟汇编的时候好像看了啥info<br />吉林-小伙&nbsp;&nbsp;1:44:48<br />这个TI1H是什么东东呢<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:45:08<br />我也不知道，估计是index之类的<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:45:17<br />要去找catch的<br />吉林-小伙&nbsp;&nbsp;1:45:23<br />嗯<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:45:50<br /><img src="file:///D:\Program Files (x86)\Tencent\QQ\PersonalData\85126585\Image\g$o420(`($o}2$~dp1ppzsa.jpg" alt="" /><br />吉林-小伙&nbsp;&nbsp;1:45:55<br />谢谢<br />吉林-小伙&nbsp;&nbsp;1:46:04<br />今天对异常又有了新的理解啊<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:46:19<br /><img src="file:///C:\Users\Error\AppData\Local\Temp\8HCCR1ND`{6ZG)4P4ECX6KO.gif" alt="" />谢谢<br />吉林-小伙&nbsp;&nbsp;1:46:24<br />这throw了一个对象<br />吉林-小伙&nbsp;&nbsp;1:46:38<br />catch&nbsp;那边就用的对象了<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:46:48<br />我今天最大的收获是在云风的博客，看到了异常的本质<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:46:51<br />偷懒，，，<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:47:04<br />和面向对象一样，，，<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:47:11<br />整个泥马就是想偷懒了<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:47:14<br />囧，，，<br />吉林-小伙&nbsp;&nbsp;1:47:55<br />抛出异常这边用引用也白费吧<br />吉林-小伙&nbsp;&nbsp;1:48:07<br />catch用引用也没用<br />吉林-小伙&nbsp;&nbsp;1:48:12<br />还是copy了一份<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:48:31<br />这是看编译器操作了<br />吉林-小伙&nbsp;&nbsp;1:48:39<br />不用看<br />吉林-小伙&nbsp;&nbsp;1:48:43<br />必须copy</div></div></div><div><div><div>&nbsp;吉林-小伙&nbsp;&nbsp;1:49:14<br />throw&nbsp;那个地方是临时对象<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:49:16<br />那个程序实施看就知道了<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:49:27<br />不一定是临时的<br />吉林-小伙&nbsp;&nbsp;1:49:32<br />一定的<br />吉林-小伙&nbsp;&nbsp;1:49:34<br />呵呵<br />吉林-小伙&nbsp;&nbsp;1:49:33<br />你试试<br />吉林-小伙&nbsp;&nbsp;1:49:41<br />这个地方我记得最清楚<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:49:53<br />囧，我要是一个&nbsp;关闭拷贝构造的class<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:49:57<br />你咋整，，，<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:50:04<br />不让抛了，，，<br />吉林-小伙&nbsp;&nbsp;1:50:34<br />你试试<br />吉林-小伙&nbsp;&nbsp;1:50:37<br />这个问题我真没想过<br />吉林-小伙&nbsp;&nbsp;1:51:01<br />不过你怎么关闭拷贝构造呢？<br />吉林-小伙&nbsp;&nbsp;1:51:39<br />默认构造你可以关闭<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:51:56<br />囧，，，<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:52:01<br />如果你说的成立<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:52:13<br />就是说这样违反了Cpp的语法规则<br />吉林-小伙&nbsp;&nbsp;1:52:29<br />你打印下地址<br />吉林-小伙&nbsp;&nbsp;1:52:34<br />看看&nbsp;这个不是我说的<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:52:36<br />用&nbsp;引用接收到一个&nbsp;copy的对象<br />吉林-小伙&nbsp;&nbsp;1:52:40<br />是我从书上看的<br />吉林-小伙&nbsp;&nbsp;1:52:52<br />当然&nbsp;不排除我记错的可能<br /><br />吉林-小伙&nbsp;&nbsp;1:52:58<br />但是&nbsp;我觉得我没记错<br />吉林-小伙&nbsp;&nbsp;1:52:59<br />呵呵<br />吉林-小伙&nbsp;&nbsp;1:53:19<br />你试试&nbsp;我去写摄像头<br />吉林-小伙&nbsp;&nbsp;1:53:27<br />等你结果<img src="file:///C:\Users\Error\AppData\Local\Temp\X@8}U9MLE}EBUE273)]9PGF.gif" sysface="13" alt="" /><br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:56:13<br />囧，，，<br /><br />是临时对象<br />吉林-小伙&nbsp;&nbsp;1:56:24<br /><img src="file:///C:\Users\Error\AppData\Local\Temp\X@8}U9MLE}EBUE273)]9PGF.gif" sysface="13" alt="" /><br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:56:25<br />所以，这里不是&nbsp;call<br />吉林-小伙&nbsp;&nbsp;1:56:36<br />引用失效了吧<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:56:39<br />应该有个运行时环境做了手脚<br />越南-relilun(232359027)&nbsp;1:57:23<br /><img src="file:///D:\Program Files (x86)\Tencent\QQ\PersonalData\85126585\Image\g5q5hi9$_[%0v`]zcnytpob.jpg" alt="" /><br />吉林-小伙&nbsp;&nbsp;1:58:07<br />好了&nbsp;既然已经确定是临时对象了&nbsp;你告诉我下怎么关闭拷贝构造<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:59:29<br />囧，，，<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:59:35<br />private<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:59:45<br />class&nbsp;CTest&nbsp;:&nbsp;boost::noncopyable<br />吉林-小伙&nbsp;&nbsp;1:59:49<br /><img src="file:///C:\Users\Error\AppData\Local\Temp\{[W]SJ`1FUG%F3J0GE}I0JW.gif" sysface="27" alt="" /><br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;1:59:52<br />还有一个是宏的，，，<br />吉林-小伙&nbsp;&nbsp;1:59:56<br />我二了<br />吉林-小伙&nbsp;&nbsp;2:00:00<br />你试试<br />吉林-小伙&nbsp;&nbsp;2:00:04<br />试试<br />吉林-小伙&nbsp;&nbsp;2:00:03<br />你关闭下十四行<br />吉林-小伙&nbsp;&nbsp;2:00:13<br />看看让抛出不了<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;2:01:32<br />编译错误<br />吉林-小伙&nbsp;&nbsp;2:01:53<br />嗯<br />吉林-小伙&nbsp;&nbsp;2:01:56<br />太感谢了<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;2:01:56<br />刚刚是建立在假象throw和catch是直接call的关系<br />吉林-小伙&nbsp;&nbsp;2:02:03<br />又学到了不少<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;2:02:38<br />应该是有个第三方&nbsp;接收throw的对象，然后清理现场，然后拷贝异常，再送到&nbsp;catch<br />吉林-小伙&nbsp;&nbsp;2:03:06<br />如果你throw的不是对象呢<br />吉林-小伙&nbsp;&nbsp;2:03:22<br />仅仅是一个char*<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;2:03:25<br /><img src="file:///C:\Users\Error\AppData\Local\Temp\8HCCR1ND`{6ZG)4P4ECX6KO.gif" alt="" />我想这不是问题<br />吉林-小伙&nbsp;&nbsp;2:04:09<br />应该是采用同样的基址<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;2:04:09<br />今天的专题是：小伙和他的异常<br />吉林-小伙&nbsp;&nbsp;2:04:11<br />机制<br />吉林-小伙&nbsp;&nbsp;2:04:26<br /><img src="file:///C:\Users\Error\AppData\Local\Temp\{[W]SJ`1FUG%F3J0GE}I0JW.gif" sysface="27" alt="" /><br />吉林-小伙&nbsp;&nbsp;2:04:30<br />你可别发我<br />吉林-小伙&nbsp;&nbsp;2:04:32<br />丢人<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;2:05:21<br />《一个异常引发的血案》<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;2:06:08<br />应该是mutex的数量到深入探讨C++异常&nbsp;</div></div></div><div><div>&nbsp;深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;2:09:34<br />忘了说了<br />catch不用reference<br />会多一次拷贝&nbsp;</div></div><div><div>&nbsp;吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;2:10:20<br />哦？<br />、<br />那更有意思了<br />哈哈<br />了解了&nbsp;<br /><div><div>&nbsp;吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;2:11:17<br />这时候就copy了一下<br />然后第三方传给&nbsp;catch<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;2:12:37<br />三次析构<br />两次构造<br />有一次应该是&nbsp;0x语法中的move<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;2:13:07<br />没用引用？<br />还是用了引用？<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;2:13:15<br />throw的时候<br />值catch<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;2:13:49<br />不应该三次析构&nbsp;两次构造的啊<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;2:14:17<br />C++果然是不是一般人玩的<br />我这是算了&nbsp;try里边的栈&nbsp;<br /><div><div>&nbsp;c++太可怕了<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;2:15:50<br /><img src="file:///C:\Users\Error\AppData\Local\Temp\4G]AXXFGC7B9S[JRP)MNFFL.gif"  alt="" />话说java&nbsp;c#更可怕<br />你压根就不想知道编译器干了啥，，，&nbsp;</div></div><br /><div><div>&nbsp;c++太可怕了<br />深圳-Enic&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;2:15:50<br /><img src="file:///C:\Users\Error\AppData\Local\Temp\4G]AXXFGC7B9S[JRP)MNFFL.gif"  alt="" />话说java&nbsp;c#更可怕<br />你压根就不想知道编译器干了啥，，，&nbsp;</div></div></div></div></div></div></div></div></div><img src ="http://www.cppblog.com/Error/aggbug/163374.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2012-01-02 02:10 <a href="http://www.cppblog.com/Error/articles/163374.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>由5分钟线程速班成到深入分析线程退出必须closehandle，否则资源泄漏（贝妞经验分享）</title><link>http://www.cppblog.com/Error/articles/162400.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Mon, 19 Dec 2011 05:36:00 GMT</pubDate><guid>http://www.cppblog.com/Error/articles/162400.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/162400.html</wfw:comment><comments>http://www.cppblog.com/Error/articles/162400.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/162400.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/162400.html</trackback:ping><description><![CDATA[<!--StartFragment -->
 

<div><!--StartFragment -->


<div>-&nbsp;-。(583214826)&nbsp;12:07:52&nbsp;<br />谁能给我讲一下vc++多线程，几分钟就搞定<br />-&nbsp;-。(583214826)&nbsp;12:08:06&nbsp;<br />谁能给我讲一下vc++多线程，几分钟就搞定,&nbsp;多谢大神们，真的很急<br />misora&lt;chriscross@qq.com&gt;&nbsp;12:08:41&nbsp;<br />这个太广泛了。。<br />-&nbsp;-。(583214826)&nbsp;12:09:03&nbsp;<br />创建一个线程，可以随时启用，就ok了<br />-&nbsp;-。(583214826)&nbsp;12:10:06&nbsp;<br />亲们，帮帮我吧<br />misora&lt;chriscross@qq.com&gt;&nbsp;12:10:24&nbsp;<br />_beginthreadex<br />-&nbsp;-。(583214826)&nbsp;12:10:41&nbsp;<br />有没有比较完整一些的代码<br />misora&lt;chriscross@qq.com&gt;&nbsp;12:10:46&nbsp;<br />没有<br />-&nbsp;-。(583214826)&nbsp;12:10:59&nbsp;<br />_begininthreadex是个方法？<br />misora&lt;chriscross@qq.com&gt;&nbsp;12:11:10&nbsp;<br />就是开始一个线程<br />-&nbsp;-。(583214826)&nbsp;12:11:46&nbsp;<br />哦<br />杯水车薪(1729751029)&nbsp;12:18:11&nbsp;<br />无线上网卡&nbsp;和&nbsp;无线网卡是2种不同的东东.&nbsp;现在都乱套了<br />-&nbsp;-。(583214826)&nbsp;12:18:36&nbsp;<br />...<br />上海-千层(670825328)&nbsp;12:19:17&nbsp;<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/rlad@%1ug@h%(1$i4g]tecx.jpg" />?????????????????还有这样提需求的?<br />如果有人说:谁给我一套房,200元搞定,这个可笑吧<br />杯水车薪(1729751029)&nbsp;12:19:31&nbsp;<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/e@`]$3x4f)d}%[_ajg`@apb.gif" /><br />上海-千层(670825328)&nbsp;12:20:45&nbsp;<br />需求定了,时间成本就已被决定了.<br />泥翘(694820778)&nbsp;12:22:49&nbsp;<br />什么东西都等着别人给你来讲&nbsp;<br />杯水车薪(1729751029)&nbsp;12:23:16&nbsp;<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/3upy1b90c__6~7l2kz6`dl6.jpg" /><br />泥翘(694820778)&nbsp;12:23:45&nbsp;<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/try1j6viyrp0y49lr)jwopw.gif" />&nbsp;<br />-&nbsp;-。(583214826)&nbsp;12:28:02&nbsp;<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/ae$u9%vy774)]hwgbpti@5d.jpg" /><br />-&nbsp;-。(583214826)&nbsp;12:28:13&nbsp;<br />时间跟钱不一样好吗<br />杯水车薪(1729751029)&nbsp;12:30:35&nbsp;<br />不是吧,昨天老师还说时间就是金钱<br />-&nbsp;-。(583214826)&nbsp;12:30:49&nbsp;<br />好吧随便吧<br />杯水车薪(1729751029)&nbsp;12:31:04&nbsp;<br />要么可能今天不是了<br />杯水车薪(1729751029)&nbsp;12:32:23&nbsp;<br />不过,我学多线程学了一周才会用好.好久以后才明白怎么才能不让程序崩溃<br />-&nbsp;-。(583214826)&nbsp;12:33:47&nbsp;<br />很多语言的线程我都学过，唯独vc++不会，其实5行代码就可以解决运行一个线程，关键我不会写啊，求高人指点。<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:34:40&nbsp;<br />-&nbsp;-。(583214826)&nbsp;&nbsp;12:33:47<br />很多语言的线程我都学过，唯独vc++不会，其实5行代码就可以解决运行一个线程，关键我不会写啊，求高人指点。<br /><br />就凭你这句话<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:34:44&nbsp;<br />没必要在这里问<br />-&nbsp;-。(583214826)&nbsp;12:34:57&nbsp;<br />...<br />-&nbsp;-。(583214826)&nbsp;12:35:06&nbsp;<br />我就是问一下，还引起公愤了<br />-&nbsp;-。(583214826)&nbsp;12:35:07&nbsp;<br />-&nbsp;-<br />-&nbsp;-。(583214826)&nbsp;12:35:12&nbsp;<br />求高人指点<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:35:15&nbsp;<br />5分钟够你在msdn找到api了<br />-&nbsp;-。(583214826)&nbsp;12:35:49&nbsp;<br />有高手给写个简单易懂的岂不是更好<br />杯水车薪(1729751029)&nbsp;12:36:53&nbsp;<br />貌似msdn也是高手所写，msdn中也有简单易懂的例子<br />-&nbsp;-。(583214826)&nbsp;12:37:09&nbsp;<br />那你们去找吧。<br />-&nbsp;-。(583214826)&nbsp;12:37:13&nbsp;<br />求高人指点<br />杯水车薪(1729751029)&nbsp;12:37:24&nbsp;<br />不过，用VC的多线程和其它语言的是很大不同地。<br /></div><!--StartFragment -->


<div>-&nbsp;-。(583214826)&nbsp;12:37:32&nbsp;<br />嗯，明白<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:37:37&nbsp;<br />哥给你找个，估计你不会用<br />唉，，，<br />-&nbsp;-。(583214826)&nbsp;12:37:48&nbsp;<br />那你给我找个吧，麻烦你了<br />杯水车薪(1729751029)&nbsp;12:37:49&nbsp;<br />其它语言地学会了，到了VC这里，仍然等于初学者<br />上海-千层(670825328)&nbsp;12:39:07&nbsp;<br />根据我的分析，这里分2类人，一类的不会的，在此忽悠人。<br />另一类的学会了，当初学得很费力，所以今天看到另一个<br />不会的，只感到高兴<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:39:28&nbsp;<br />不是，他问问题的态度&nbsp;我很难接受<br />-&nbsp;-。(583214826)&nbsp;12:39:34&nbsp;<br />还有一类，就是吃饱了没事干在这评论问题的<br />上海-千层(670825328)&nbsp;12:39:38&nbsp;<br />唉。一切的罪都在多线程太难。不能怪任何人<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:39:52&nbsp;<br />用boost::thead<br />-&nbsp;-。(583214826)&nbsp;12:40:03&nbsp;<br />我的态度没那么不好吧？&nbsp;-&nbsp;-<br />上海-千层(670825328)&nbsp;12:40:39&nbsp;<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/%v6un_iqc7ru$r%w50$y~7f.jpg" />向他推荐用boost的，看来属于第4类了。<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:41:12&nbsp;<br />装逼的<br />上海-千层(670825328)&nbsp;12:41:14&nbsp;<br />唉。只能说，咱群虽小，品种却多。<br />-&nbsp;-。(583214826)&nbsp;12:41:29&nbsp;<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/hv@56g0cp69}`}e0c6r4sxb.jpg" /><br />你是不是大姨妈来了？<br />-&nbsp;-。(583214826)&nbsp;12:41:50&nbsp;<br />你要真觉着没事干可以去看看书什么的<br />-&nbsp;-。(583214826)&nbsp;12:41:57&nbsp;<br />知识是无边的。你怎么也学不完<br />上海-千层(670825328)&nbsp;12:42:08&nbsp;<br />你是不是没钱去按摩啊<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:42:12&nbsp;<br />问问题的还是少评论，，，<br />上海-千层(670825328)&nbsp;12:42:17&nbsp;<br />这么兴奋<br />-&nbsp;-。(583214826)&nbsp;12:42:28&nbsp;<br />我不兴奋，看你吃太多了，我关心一下<br />上海-千层(670825328)&nbsp;12:43:12&nbsp;<br />只是娱乐一下罢了。你还有啥不开心的，也说说让咱开心一下<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:43:33&nbsp;<br />这小伙应该不是C系程序员<br />杯水车薪(1729751029)&nbsp;12:43:33&nbsp;<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/[z@~2[]k8oa3yze]8[g6_yb.jpg" /><br />-&nbsp;-。(583214826)&nbsp;12:43:40&nbsp;<br />我跟你那谁有一腿了。不好意思<br />-&nbsp;-。(583214826)&nbsp;12:43:46&nbsp;<br />我不是学c++的<br />杯水车薪(1729751029)&nbsp;12:44:17&nbsp;<br />不是啊<br />杯水车薪(1729751029)&nbsp;12:44:31&nbsp;<br />来错群了。怪不得成了娱乐。<br />-&nbsp;-。(583214826)&nbsp;12:45:10&nbsp;<br />哦，你们很不喜欢不会c++的人啊<br />-&nbsp;-。(583214826)&nbsp;12:45:16&nbsp;<br />好吧<br />杯水车薪(1729751029)&nbsp;12:45:20&nbsp;<br />喜欢<br />杯水车薪(1729751029)&nbsp;12:45:48&nbsp;<br />C++的人很少娱乐的。<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:46:13&nbsp;<br />相对还是很open的<br />上海-千层(670825328)&nbsp;12:46:14&nbsp;<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/LY6DR3ISJE0)6K)L)]~VIZK.gif" sysface="20" /><br />上海-千层(670825328)&nbsp;12:47:04&nbsp;<br />看把他急的，这一腿那一腿都说出来了。快崩溃了。<br />看来他本身就不是多线程的。<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:47:19&nbsp;<br /><br />#include&nbsp;&lt;iostream&gt;<br /><br />using&nbsp;namespace&nbsp;std;<br /><br />#include&nbsp;&lt;boost/thread.hpp&gt;<br /><br />void&nbsp;TestFunc()<br />{<br />cout&nbsp;&lt;&lt;&nbsp;__FUNCTION__&nbsp;&lt;&lt;&nbsp;endl;<br />}<br /><br />int&nbsp;_tmain(int&nbsp;argc,&nbsp;_TCHAR*&nbsp;argv[])<br />{<br />boost::thread&nbsp;threadTest(&amp;TestFunc);<br /><br />threadTest.join();<br /><br />getchar();<br /><br />return&nbsp;0;<br />}<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:47:25&nbsp;<br />没编译<br />杯水车薪(1729751029)&nbsp;12:47:23&nbsp;<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/ibz2mbj%bx0inz`r~f28}ji.gif" /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:47:31&nbsp;<br />不过应该没问题的<br />-&nbsp;-。(583214826)&nbsp;12:47:36&nbsp;<br />谢谢高手，比某人强很多<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:47:43&nbsp;<br />我是水货<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:47:51&nbsp;<br />高手不会回答这么简单的问题的<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:47:55&nbsp;<br />尤其你这种态度<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:48:04&nbsp;<br />我敢说&nbsp;在C++群&nbsp;绝对混不开<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:48:18&nbsp;<br />除非你在其他方面很牛<br />-&nbsp;-。(583214826)&nbsp;12:48:52&nbsp;<br />我态度也没怎么不好啊，我只是解释一下我能很快接受高手给讲得东西罢了<br />-&nbsp;-。(583214826)&nbsp;12:49:09&nbsp;<br />要不然你看看聊天记录-&nbsp;-<br />杯水车薪(1729751029)&nbsp;12:49:09&nbsp;<br />武汉-Error，这样答题，什么也不会解决。他仍然不会，相信boost是需要安装的，所以他也用不成<br />-&nbsp;-。(583214826)&nbsp;12:49:28&nbsp;<br />我试试吧，不行再解决<br />游戏开发者(2528395832)&nbsp;12:49:34&nbsp;<br />推荐你找好工作&nbsp;只要你上CG游戏人才网：http://www.cggamejob.com注册个人会员，&nbsp;就能帮你实现就业&nbsp;最新职位招聘：：3D角色&nbsp;场景&nbsp;特效&nbsp;动作&nbsp;影视动画&nbsp;美术&nbsp;程序、策划、数值&nbsp;市场&nbsp;&nbsp;运营等.&nbsp;<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:49:42&nbsp;<br />-&nbsp;-。(583214826)&nbsp;&nbsp;12:48:52<br />我态度也没怎么不好啊，我只是解释一下我能很快接受高手给讲得东西罢了<br /><br />C++er&nbsp;从来不信速成<br />杯水车薪(1729751029)&nbsp;12:49:41&nbsp;<br />他还得再提问<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:50:11&nbsp;<br />合格的C++er&nbsp;&nbsp;都是被编译器摧残蹂躏出来的<br />-&nbsp;-。(583214826)&nbsp;12:50:14&nbsp;<br />就算我信了速成也不能说我态度不好吧&nbsp;-&nbsp;-，我很诚恳艾。。<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:50:23&nbsp;<br />诚恳个屁<br />杯水车薪(1729751029)&nbsp;12:50:24&nbsp;<br />你开了头，要是不帮他完全解决，反可能成为不耐心的人。<br />-&nbsp;-。(583214826)&nbsp;12:50:36&nbsp;<br />...<br />-&nbsp;-。(583214826)&nbsp;12:50:37&nbsp;<br />好吧<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:50:49&nbsp;<br />囧，，，<br />-&nbsp;-。(583214826)&nbsp;12:50:57&nbsp;<br />小弟认错了<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:51:10&nbsp;<br />error&nbsp;PRJ0003&nbsp;:&nbsp;Error&nbsp;spawning&nbsp;'cmd.exe'.<br /><br /><!--StartFragment -->


<div>武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:51:13&nbsp;<br />谁遇到过<br />-&nbsp;-。(583214826)&nbsp;12:52:02&nbsp;<br />问个问题真困难<br />-&nbsp;-。(583214826)&nbsp;12:52:03&nbsp;<br />唉<br />杯水车薪(1729751029)&nbsp;12:52:37&nbsp;<br />可能原因恰在于你问了一个过于简单的问题<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:52:52&nbsp;<br />太抽象了<br />-&nbsp;-。(583214826)&nbsp;12:53:08&nbsp;<br />果然出问题了<br />-&nbsp;-。(583214826)&nbsp;12:53:21&nbsp;<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/iwx7of8579t3q$tm_33bzdt.jpg" /><br />-&nbsp;-。(583214826)&nbsp;12:53:31&nbsp;<br />这是要添加外部文件吧？<br />杯水车薪(1729751029)&nbsp;12:53:45&nbsp;<br />好，武汉人，可以继续了。<br />-&nbsp;-。(583214826)&nbsp;12:53:54&nbsp;<br />....<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:54:24&nbsp;<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/)QN1UH78VKP2T7)IA]ZM(FW.gif" sysface="97" /><br />-&nbsp;-。(583214826)&nbsp;12:54:36&nbsp;<br />不对<br />-&nbsp;-。(583214826)&nbsp;12:54:47&nbsp;<br />是这样<br />上海-千层(670825328)&nbsp;12:54:51&nbsp;<br />用了boost你就掉进了无底洞。<br />现在相信关于第4类人的理论了吧。<br />-&nbsp;-。(583214826)&nbsp;12:55:09&nbsp;<br />我的程序要在标准win32平台下运行，不能带其他的类库<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:55:12&nbsp;<br />声明下，，，偶今天是装逼来的，，，<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;12:55:30&nbsp;<br />主要是不用boost&nbsp;太麻烦了，要写好多代码<br />-&nbsp;-。(583214826)&nbsp;12:55:33&nbsp;<br />....<br />杯水车薪(1729751029)&nbsp;12:55:26&nbsp;<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/e@`]$3x4f)d}%[_ajg`@apb.gif" /><br />-&nbsp;-。(583214826)&nbsp;12:55:42&nbsp;<br />createThread这个就行了吧 </div></div><br /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;12:55:59<br />-&nbsp;-。(583214826)&nbsp;&nbsp;12:55:42<br />createThread这个就行了吧<br /><br />简单的给你代码&nbsp;是害你，，，<br />-&nbsp;-。(583214826)&nbsp;&nbsp;12:56:05<br />明白<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;12:56:06<br />很多东西要注意的<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;12:56:25<br />__beginthread<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;12:56:27<br />用这个<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;12:56:31<br />理由不解释<br />-&nbsp;-。(583214826)&nbsp;&nbsp;12:56:37<br />我查查<br />杯水车薪(1729751029)&nbsp;&nbsp;12:57:08<br />用哪个函数他能不知道？一共就2个函数。msdn中推荐一个。<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;12:57:20<br />上海-千层(670825328)&nbsp;&nbsp;12:54:51<br />用了boost你就掉进了无底洞。<br />现在相信关于第4类人的理论了吧。<br /><br />千同学展开来说说<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;12:57:27<br />还有一会才上班呢<br />上海-千层(670825328)&nbsp;&nbsp;12:57:37<br />真正的困难还没看出来？困难在于要几分钟之内。<br />杯水车薪(1729751029)&nbsp;&nbsp;12:57:49<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/LY6DR3ISJE0)6K)L)]~VIZK.gif" sysface="20" /><br />-&nbsp;-。(583214826)&nbsp;&nbsp;12:58:01<br />呵呵，可惜没人能带着我搞一下<br />-&nbsp;-。(583214826)&nbsp;&nbsp;12:58:07<br />自己搞当然要花时间了<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;12:58:08<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/)QN1UH78VKP2T7)IA]ZM(FW.gif" sysface="97" /><br /><br />我不用boost&nbsp;也要去查函数，然后填api<br />上海-千层(670825328)&nbsp;&nbsp;12:58:08<br />线程能有多少函数啊？<br />-&nbsp;-。(583214826)&nbsp;&nbsp;12:58:09<br />亲<br />杯水车薪(1729751029)&nbsp;&nbsp;12:58:48<br />至此，武汉人是唯一回答过的人，请继续吧<br />上海-千层(670825328)&nbsp;&nbsp;12:59:39<br />别人花时间搞成功的，适用于所有情况的，恐怕只有boost了。<br />上海-千层(670825328)&nbsp;&nbsp;13:00:01<br />好东东怕你吞不下去啊.<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:00:04<br />我不是武汉人<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:00:22<br />好吧<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:00:25<br />第二版&nbsp;给你<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:00:27<br />#include&nbsp;&lt;iostream&gt;<br /><br />using&nbsp;namespace&nbsp;std;<br /><br />#include&nbsp;&lt;boost/thread.hpp&gt;<br /><br />#include&nbsp;&lt;Windows.h&gt;<br />#include&nbsp;&lt;process.h&gt;&nbsp;<br /><br />void&nbsp;TestFunc()<br />{<br />cout&nbsp;&lt;&lt;&nbsp;__FUNCTION__&nbsp;&lt;&lt;&nbsp;endl;<br />}<br /><br />void&nbsp;TestFuncWin(&nbsp;void&nbsp;*ch&nbsp;)<br />{<br />cout&nbsp;&lt;&lt;&nbsp;__FUNCTION__&nbsp;&lt;&lt;&nbsp;endl;<br />}<br /><br /><br />int&nbsp;_tmain(int&nbsp;argc,&nbsp;_TCHAR*&nbsp;argv[])<br />{<br />boost::thread&nbsp;threadTest(&amp;TestFunc);<br /><br />threadTest.join();<br /><br />_beginthread(&nbsp;&amp;TestFuncWin,&nbsp;0,&nbsp;NULL&nbsp;);<br /><br /><br /><br />getchar();<br /><br />return&nbsp;0;<br />}<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:00:45<br />不过你要是这么用了，技术经理会怀疑你的能力<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:01:44<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/$I8873TJFOGX9(M_~(CH8$N.jpg" /><br />上海-千层(670825328)&nbsp;&nbsp;13:02:09<br />你都改用api了，那这个例子就别用boost了。他电脑里没这个。<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:02:19<br />这是我编译通过的代码，，，<br /><br />你怎么跟研究生一样麻烦<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:02:27<br />.....<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:02:45<br />把&nbsp;boost的东西&nbsp;干掉<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:02:50<br />剩下的就是你要的<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:02:58<br />行了<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:03:00<br />我没用boost<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:03:09<br />thanks<br />上海-千层(670825328)&nbsp;&nbsp;13:03:20<br />在函数前加修饰字&nbsp;&#8220;WINAPI&#8221;<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:03:32<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/[LC3U)F{0XCAB)LKNIT0K@G.gif" sysface="79" />&nbsp;&nbsp;装逼成功<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:03:35<br />.....<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:03:46<br />其实学C++的人都很热情<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:03:59<br />只是恨牛不成逼啊<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:04:01<br />主线程的函数还是开启线程要执行的函数<br />上海-千层(670825328)&nbsp;&nbsp;13:04:01<br />个个都像是刚来大姨妈一样<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:04:32<br />#include&nbsp;&lt;iostream&gt;<br /><br />using&nbsp;namespace&nbsp;std;<br /><br /><br /><br />#include&nbsp;&lt;Windows.h&gt;<br />#include&nbsp;&lt;process.h&gt;&nbsp;<br /><br /><br />void&nbsp;TestFuncWin(&nbsp;void&nbsp;*ch&nbsp;)<br />{<br />cout&nbsp;&lt;&lt;&nbsp;__FUNCTION__&nbsp;&lt;&lt;&nbsp;endl;<br />}<br /><br /><br />int&nbsp;_tmain(int&nbsp;argc,&nbsp;_TCHAR*&nbsp;argv[])<br />{<br /><br />_beginthread(&nbsp;&amp;TestFuncWin,&nbsp;0,&nbsp;NULL&nbsp;);<br /><br />getchar();<br /><br />return&nbsp;0;<br />}<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:04:36<br />这样就不会错了<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:04:38<br />o(︶︿︶)o&nbsp;唉，，，<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:05:42<br />好了，成功了<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:05:58<br />午休时间都快过了，，，<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:06:02<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/`_3IDE5_G%D5ZKS[WM]7O5N.jpg" /><br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:06:38<br />好吧，被骂的很爽，不过问题解决了<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:06:42<br />谢谢诸位大神啦<br />上海-千层(670825328)&nbsp;&nbsp;13:06:59<br />呵呵，不是成功了<br />而是失败刚开始<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:07:18<br />失败了就debug<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:07:26<br />为debug奋斗一辈子-&nbsp;-<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:07:30<br />上海-千层(670825328)&nbsp;&nbsp;13:06:59<br />呵呵，不是成功了<br />而是失败刚开始<br /><br />正解<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:07:48<br />多线程的还真得&nbsp;debug一辈子<br />杯水车薪(1729751029)&nbsp;&nbsp;13:07:50<br />不是太可能吧。多线程可以认为就是一条不归路。用了就是找死。<br />杯水车薪(1729751029)&nbsp;&nbsp;13:08:00<br />debug没用<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:08:03<br />那个<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:08:14<br />这线程不会要手动销毁吧-&nbsp;-？<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:08:17<br />也别太绝对嘛<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:08:28<br />自然return就可以<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:08:38<br />不要问其他的了<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:08:46<br />将一个月都讲不完<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:08:50<br />...<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:09:04<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/CY5E5M_9YA$ZG{38`@42ISS.jpg" /><br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:09:09<br />返回的线程句柄嘛<br />上海-千层(670825328)&nbsp;&nbsp;13:09:07<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/{Q93AGV7GWDL{5WZ~}ZP$_R.jpg" />&nbsp;这不对。<br />windows下线程会占用一个handle，必须close&nbsp;<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:09:14<br />不销毁怎么办？<br />上海-千层(670825328)&nbsp;&nbsp;13:10:06<br />handle是系统级别的资源。不close将会时间长占完了以后系统死机<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:10:10<br />销毁线程的函数叫什么来着<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:10:16<br />这个我真没注意<br />上海-千层(670825328)&nbsp;&nbsp;13:10:55<br />一般不要销毁线程。否则线程不会执行栈展开行为，将会内存泄漏<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:11:31<br />线程用完才销毁<br />上海-千层(670825328)&nbsp;&nbsp;13:11:47<br />不是，不要销毁。要让线程自己结束<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:11:56<br />应该有个什么函数，用来接收<img alt="" src="file:///D:/QQ2010/Users/85126585/Image/CY5E5M_9YA$ZG{38`@42ISS.jpg" />传回来的参数<br />杯水车薪(1729751029)&nbsp;&nbsp;13:12:12<br />欢迎你来到多线程的失败之路。<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:12:42<br />那线程指定的回调方法执行完了不就自己就结束了吗<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:12:53<br />好吧，那就不用擦屁股了<br />上海-千层(670825328)&nbsp;&nbsp;13:13:10<br />应该，这个想法没错。可线程传回来之前你创建的线程可能就已经结束了，你要考虑和设计<br />上海-千层(670825328)&nbsp;&nbsp;13:13:36<br />这个handle也要close<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:13:54<br />我没找到什么&nbsp;distoryThread之类的函数<br />杯水车薪(1729751029)&nbsp;&nbsp;13:13:58<br />算了，先用着吧。等死机了再debug<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:14:21<br />TerminateThread(thread1,&nbsp;0);<br />CloseHandle(thread1);<br /><br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:14:25<br />是不是这两个<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:14:34<br />千城<br />上海-千层(670825328)&nbsp;&nbsp;13:14:43<br />多线程你想debug????????把大姨妈调出来了也调不出问题在哪<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:14:48<br />你说的是&nbsp;CreateThread&nbsp;之后必须要&nbsp;closeHandle把<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:14:57<br />我记得用_beginthread是不需要的啊？<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:15:00<br />难道我记错了？<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:15:14<br />_beginthread返回了一个ptr<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:15:23<br />我想应该是用作关闭的<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:15:49<br />永远不要在线程外部强制关闭线程<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:15:57<br />嗯，好<br />上海-千层(670825328)&nbsp;&nbsp;13:16:37<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/69U{6CU`THGS7JMD2~8IH@B.jpg" />我就是用这个函数，以前试过不close，连续运行10几个小时，最后handle没有了，出错了。一开始都是好的。<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:17:20<br />嗯&nbsp;受教了&nbsp;<br />杯水车薪(1729751029)&nbsp;&nbsp;13:19:04<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/_XV~9AKTUT)QS$3LX16M424.gif" sysface="22" /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:19:08<br />如果用pthread&nbsp;之类<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;13:19:15<br />是不需要这么麻烦的吧<br />杯水车薪(1729751029)&nbsp;&nbsp;13:19:24<br />好。事情完了。<br />不过这个人的确让我们不爽，提议T之<br />-&nbsp;-。(583214826)&nbsp;&nbsp;13:20:21<br />首先要澄清一个问题，那就是CreateThread是Windows的API函数，而_beginthread和_beginthreadex则是CRT库函数，查看这两个CRT函数的代码可以得知其实它们内部是调用的CreateThread（这很显然嘛，CRT库也是要运行在Windows上）。<br /><br />这两个CRT函数与CreateThread有什么区别呢？区别在于这两个CRT函数针对其它CRT库函数，特别是那些涉及内存分配的CRT函数做了特殊的处理。直接在CreateThread&nbsp;API创建的线程中使用sprintf，malloc，strcat等涉及CRT存储堆操作的CRT库函数是很危险的，容易造成线程的意外中止。&nbsp;在使用_beginthread和_beginthreadex创建的线程中可以安全的使用CRT函数，但是必须在线程结束的时候相应的调用_endthread或_endthreadex。虽然都是内部调用CreateThread&nbsp;API创建线程，但是这两个函数还是有很大的区别。首先，_beginthreadex函数比_beginthread函数多了三个参数，使它看起来更像CreateThread而不是同胞兄弟_beginthread；其次，_beginthread要求线程函数是__cdecl调用约定，并且没有返回值，而_beginthreadex则要求线程函数是__stdcall调用约定并且返回线程的退出码；第三，与_beginthread成对调用的_endthread函数内部隐式的调用CloseHandle关闭了线程句柄，而与_beginthreadex成对使用的_endthreadex则没有关闭线程的句柄，需要显示的调用CloseHandle关闭线程句柄；最后，这两个函数在执行成功时返回线程的句柄，可以通过这个句柄调用其它线程相关的API，比如SetThreadPriority，ResumeThread等等。但是执行失败时返回值是不同的，_beginthread返回&nbsp;-1&nbsp;表示失败，而_beginthreadex返回&nbsp;0&nbsp;表示失败。 <br /><br />
<p>武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt;&nbsp; 13:17:39<br />今天讨论一个问题<br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt;&nbsp; 13:17:44<br />关于线程的<br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt;&nbsp; 13:17:59<br />//Create a new thread.<br />&nbsp;&nbsp; HANDLE hThread = CreateThread(NULL, 0, SecondThread, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (PVOID)&amp;x, 0, &amp;dwThreadId);</p>
<p>&nbsp;&nbsp; //We don't reference the new thread anymore,<br />&nbsp;&nbsp; //so close our handle to it.<br />&nbsp;&nbsp; closeHandle(hThread);</p>
<p><br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt;&nbsp; 13:18:08<br />这是Windows核心编程的一段代码<br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt;&nbsp; 13:18:23<br />为啥 CreateThread后面要跟一个closehandle<br />南昌-贝贝(1125591)&nbsp; 13:19:49<br />创建线程后,线程有个内核对象,句柄的存在对于内核对象的计数+1.关闭句柄以便减少计数.线程退出时这个内核对象就删除.<br />北京-li(76433692)&nbsp; 13:22:06<br />意味着：句柄不作close 线程退出时 内核对象不自动删除？需要手工删除？<br />北京-li(76433692)&nbsp; 13:22:48<br />创建时如果不close，在退出线程时候close也是可以的吧？<br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt;&nbsp; 13:23:58<br />贝妞处理这类场景的规范是啥<br />南昌-贝贝(1125591)&nbsp; 13:24:29<br />内核对象中保存与线程有关的数据<br />有句柄存在,这个数据的引用计数就+1<br />如果不关闭.那么就一直可以通过这个句柄操作数据结构,操作线程<br />不关闭的话,内核对象在进程退出前永不减少引用.引用为0时才删除线程内核对象.&nbsp; 如果你不用它,又不 CloseHandle 线程又退出了, 这样内核对象还在,就好比是有内存泄漏一样<br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt;&nbsp; 13:25:08<br />用pthread之类的库不会有这样的问题吧<br />南昌-贝贝(1125591)&nbsp; 13:25:09<br />哥哥我通常保留到句柄...以便以后操作, 在线程退出时再删除(以后不用操作它的时候,就直接CloseHandle<br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt;&nbsp; 13:25:30<br />&nbsp;在线程退出时再删除</p>
<p>是自己删除么？<br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt;&nbsp; 13:25:37<br />还是启动线程负责删除<br />南昌-贝贝(1125591)&nbsp; 13:25:35<br />是自己删除<br />南昌-贝贝(1125591)&nbsp; 13:25:43<br />系统给你删除呗<br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt;&nbsp; 13:25:53<br />return 之前&nbsp; closehandle？<br />南昌-贝贝(1125591)&nbsp; 13:26:04<br />你不用操作这个线程了就 CloseHandle<br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt;&nbsp; 13:28:24<br />就是线程外部整的，，，</p>
<p>也就是贝妞基本上都是要带一个 线程管理模块<br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt;&nbsp; 13:28:33<br />还是贝妞专业啊<br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt;&nbsp; 13:28:40<br />o(︶︿︶)o 唉，，，</p>
<p>我才注意到这个问题<br /><br /></p>
<p>中山-疯子(510776002)&nbsp; 13:38:11<br />当程序调用CreateThread函数时，首先系统为线程建立一个用来管理线程的数据结构，其中包含线程的一些统计信息，如引用计数和退出码等，这个数据结构被称为线程对象；接下来系统将从进程的地址空间中为线程的堆栈分配内存并开始线程的执行。当线程结束时，线程的堆栈被释放，但是线程对象不会马上被释放，系统保留它以便其他线程可以通过它检测线程的有关情况，直到使用CloseHandle函数关闭线程句柄后，线程对象才会被释放。</p>
<p>但是线程对象也可以提前被释放，对于大部分的句柄来说（如文件句柄hFile，文件寻找句柄hFindFile等），使用CloseHandle函数关闭句柄意味着整个对象被释放，但对于线程句柄来说，关闭它仅释放线程的统计信息，并不会终止线程的执行，所以如果不再需要使用线程句柄的话，在调用CreateThread后马上就可以将它关闭掉，线程的执行并不会受影响。<br /></p>
<p>&nbsp;</p></div><img src ="http://www.cppblog.com/Error/aggbug/162400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2011-12-19 13:36 <a href="http://www.cppblog.com/Error/articles/162400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IOCP lpCompletionKey 和打水的瓶子 (VC专业群3 湖南-VC的遐想)</title><link>http://www.cppblog.com/Error/articles/161848.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Fri, 09 Dec 2011 15:01:00 GMT</pubDate><guid>http://www.cppblog.com/Error/articles/161848.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/161848.html</wfw:comment><comments>http://www.cppblog.com/Error/articles/161848.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/161848.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/161848.html</trackback:ping><description><![CDATA[<p>湖南-VC(215735031) 21:58:46 <br />GetQueuedCompletionStatus</p>
<p>你怎么理解这个函数的lpCompletionKey参数的 <br />吉林-小伙&nbsp; 21:59:36 <br />这个？ <br />吉林-小伙&nbsp; 21:59:46 <br />一个I/O完成了 <br />吉林-小伙&nbsp; 21:59:52 <br />这个函数就不阻塞了 <br />湖南-VC(215735031) 22:00:09 <br />再聚焦一下 <br />湖南-VC(215735031) 22:00:29 <br />我指的第三个参数 <br />吉林-小伙&nbsp; 22:00:32 <br />然后这个参数传过来的 就是你投递的那个请求的 对应的那个参数 <br />吉林-小伙&nbsp; 22:00:41 <br />那个结构的指针 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:00:44 <br />这是接口 <br />吉林-小伙&nbsp; 22:00:50 <br />我也不懂 哈哈 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:01:06 <br />为了让你舒服点 <br />吉林-小伙&nbsp; 22:01:13 <br />CreateIoCompletionPort 这个指定的 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:01:26 <br />如果没有这个参数&nbsp; 你肯定会想办法实现类似的效果 <br />湖南-VC(215735031) 22:01:54 <br />我明白它的用途 <br />吉林-小伙&nbsp; 22:01:59 <br />我就用这个参数得到完成I/O的那个socket的 <br />吉林-小伙&nbsp; 22:02:09 <br />你说说<br />我学学 <br />湖南-VC(215735031) 22:02:12 <br />但还是觉得没有一个形象的词语记住它 <br />吉林-小伙&nbsp; 22:02:14 <br />我对完成端口 完全不会 <br />湖南-VC(215735031) 22:02:28 <br />说键值对，不准确 <br />南昌-贝贝(1125591) 22:02:30 <br />lpCompletionKey : 携带和IO句柄相关的数据<br />lpOverlapped : 携带和当前这次IO相关的数据 <br />湖南-VC(215735031) 22:02:34 <br />更像是键键 <br />吉林-小伙&nbsp; 22:02:57 <br />贝神 笔记 <br />吉林-小伙&nbsp; 22:02:58 <br />呵呵 <br />湖南-VC(215735031) 22:03:25 <br />key其实比较形象 <br />湖南-VC(215735031) 22:03:28 <br />钥匙， <br />杭州 -(_少(26062281) 22:03:50 <br />咋又玩上IOCP了 <br /></p>
<p>吉林-小伙&nbsp; 21:57:11 <br />靠人格魅力&nbsp; <br />吉林-小伙&nbsp; 21:57:12 <br />哈哈 <br />湖南-VC(215735031) 21:57:17 <br />算起来我比你开支还多9毛，我喝果粒橙，大瓶的 <br />吉林-小伙&nbsp; 21:57:23 <br />靠激情 <br />吉林-小伙&nbsp; 21:57:50 <br />不吹牛逼了 <br />湖南-VC(215735031) 21:58:46 <br />GetQueuedCompletionStatus</p>
<p>你怎么理解这个函数的lpCompletionKey参数的 <br />吉林-小伙&nbsp; 21:59:36 <br />这个？ <br />吉林-小伙&nbsp; 21:59:46 <br />一个I/O完成了 <br />吉林-小伙&nbsp; 21:59:52 <br />这个函数就不阻塞了 <br />湖南-VC(215735031) 22:00:09 <br />再聚焦一下 <br />湖南-VC(215735031) 22:00:29 <br />我指的第三个参数 <br />吉林-小伙&nbsp; 22:00:32 <br />然后这个参数传过来的 就是你投递的那个请求的 对应的那个参数 <br />吉林-小伙&nbsp; 22:00:41 <br />那个结构的指针 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:00:44 <br />这是接口 <br />吉林-小伙&nbsp; 22:00:50 <br />我也不懂 哈哈 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:01:06 <br />为了让你舒服点 <br />吉林-小伙&nbsp; 22:01:13 <br />CreateIoCompletionPort 这个指定的 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:01:26 <br />如果没有这个参数&nbsp; 你肯定会想办法实现类似的效果 <br />湖南-VC(215735031) 22:01:54 <br />我明白它的用途 <br />吉林-小伙&nbsp; 22:01:59 <br />我就用这个参数得到完成I/O的那个socket的 <br />吉林-小伙&nbsp; 22:02:09 <br />你说说<br />我学学 <br />湖南-VC(215735031) 22:02:12 <br />但还是觉得没有一个形象的词语记住它 <br />吉林-小伙&nbsp; 22:02:14 <br />我对完成端口 完全不会 <br />湖南-VC(215735031) 22:02:28 <br />说键值对，不准确 <br />南昌-贝贝(1125591) 22:02:30 <br />lpCompletionKey : 携带和IO句柄相关的数据<br />lpOverlapped : 携带和当前这次IO相关的数据 <br />湖南-VC(215735031) 22:02:34 <br />更像是键键 <br />吉林-小伙&nbsp; 22:02:57 <br />贝神 笔记 <br />吉林-小伙&nbsp; 22:02:58 <br />呵呵 <br />湖南-VC(215735031) 22:03:25 <br />key其实比较形象 <br />湖南-VC(215735031) 22:03:28 <br />钥匙， <br />杭州 -(_少(26062281) 22:03:50 <br />咋又玩上IOCP了 <br />湖南-VC(215735031) 22:03:50 <br />关联file handle的时候，指定一把钥匙 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:04:06 <br />贝贝就是贝贝 <br />湖南-VC(215735031) 22:04:10 <br />收到通知的时候，系统还回这把钥匙 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:04:24 <br />有了这个以后 就不需要自己做map了 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:04:57 <br />我觉得是这样的&nbsp; socket handle 要和一个更加抽象的handle 关联起来 <br />湖南-VC(215735031) 22:05:10 <br />map 跟 keyvalue 有得一拼啊 <br />湖南-VC(215735031) 22:05:44 <br />如果hsocket是key, 一个更丰满的结构体是value <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:05:57 <br />扩展下话题吧 <br />湖南-VC(215735031) 22:06:02 <br />那么系统完成通知后，返回一个丰满的value? <br />吉林-小伙&nbsp; 22:06:15 <br />今天你可别发会议记录了 <br />吉林-小伙&nbsp; 22:06:16 <br />呵呵 <br />吉林-小伙&nbsp; 22:06:22 <br />我该丢人啦 <br />吉林-小伙&nbsp; 22:06:28 <br />哈哈 不懂完成端口 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:06:39 <br />异步的socket分成两类<br />一类是以 socket句柄作为key<br />一类是以 每次IO动作为key <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:06:48 <br />貌似我最近半年就这收获 <br />湖南-VC(215735031) 22:06:51 <br />GetQueuedCompletionStatus 有 WSARecv, WSASend驱动 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:07:04 <br />贝贝刚刚一句话点通了很多 <br />湖南-VC(215735031) 22:07:08 <br />而WSARecv又必须传入有效的hSocket, <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:07:21 <br />IOCP 对 两种模型 都有key <br />湖南-VC(215735031) 22:07:20 <br />而这个hSocket又是之前的keyvalue的键 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:07:29 <br />是滴 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:08:00 <br />听贝一席话，胜写十年代码 <br />湖南-VC(215735031) 22:08:12 <br />说到底，都是围绕hSocket，&nbsp; <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:08:35 <br />恩，但是IOCP&nbsp; <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:08:47 <br />还需要 对每次的投递 标记 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:08:57 <br />所以就有了 后面那个参数了 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:09:26 <br />看过一个网络项目的代码 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:09:32 <br />他是给每个socket句柄 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:09:41 <br />配一个inbuffer&nbsp; 一个outbuffer <br /></p>
<p>&nbsp;</p>
<p>南昌-贝贝(1125591) 22:10:08 <br />完成端口又不是专给&nbsp; socket&nbsp; 用的 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:10:13 <br />创建完成端口的时候&nbsp; 把这个对象的地址最为key <br />杭州 -(_少(26062281) 22:10:25 <br />那还给什么用的 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:10:41 <br />所有的handle都可以好像&nbsp;&nbsp; <br />吉林-小伙&nbsp; 22:10:42 <br />我用的时候 <br />吉林-小伙&nbsp; 22:10:45 <br />就弄一个buffer <br />南昌-贝贝(1125591) 22:10:51 <br />所有IO操作都可以用 <br />湖南-VC(215735031) 22:10:53 <br />说到底都围绕一个file handle <br />吉林-小伙&nbsp; 22:11:02 <br />嗯 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:11:02 <br />还可以当作线程池用 <br />杭州 -(_少(26062281) 22:11:09 <br />用&nbsp; recv send 这些函数 可以吗 <br />南昌-贝贝(1125591) 22:11:22 <br />recv send 是同步的 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:11:49 <br />recv是伯克利标准的 <br />南昌-贝贝(1125591) 22:11:48 <br />管道我也用IOCP <br />湖南-VC(215735031) 22:12:10 <br />我想到一个形象点的比喻了。 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:12:23 <br />啥 <br />杭州 -(_少(26062281) 22:12:32 <br />不是有个函数可以设置的吗 <br />杭州 -(_少(26062281) 22:13:43 <br />难怪上次有个人和我说iocp 不要拘泥于socket <br />杭州 -(_少(26062281) 22:14:01 <br />学习了 感谢贝神 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:14:58 <br />LPOVERLAPPED *lpOverlapped,&nbsp;&nbsp; <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:15:01 <br />这个参数 <br />吉林-小伙&nbsp; 22:15:02 <br />在我还没接触IOCP的时候<br />这个群里 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:15:16 <br />一般咋设计的&nbsp; <br />湖南-VC(215735031) 22:15:17 <br />系统接收一个外部链接套接字，可以比作一张纸条，上面1表示一个编号，把这张纸贴在一个瓶子上，这个瓶子就相当于completionKey, 当系统完成某个动作，相当于把瓶子里注满水，GetQueuedCompletionStatus 的时候是连整个瓶子扔回来的，瓶子上自然有那个sock1标签。 <br />吉林-小伙&nbsp; 22:15:19 <br />就说过N次IOCP不只用于网络 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:15:20 <br />大伙儿 <br />南昌-贝贝(1125591) 22:15:46 <br />重叠结构由微软内部使用,俺们农村的一般不知道里面干啥的 <br />吉林-小伙&nbsp; 22:15:49 <br />？ <br />湖南-VC(215735031) 22:16:34 <br />哈哈，讨论一下，就加深了印象。 下次再有什么抽象的再跟你们讨论谈论 <br />湖南-VC(215735031) 22:17:19 <br />一系列的操作都是围绕那张纸进行的。 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:17:31 <br />本期的主题就是 《 IOCP lpCompletionKey湖南VC哥丢失的标签》 <br />吉林-小伙&nbsp; 22:17:33 <br />理解不上去 <br />湖南-VC(215735031) 22:17:40 <br />得， error,别写我。 <br />湖南-VC(215735031) 22:17:45 <br />小伙 哪里不理解 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:17:47 <br />还没完咧 <br />吉林-小伙&nbsp; 22:17:59 <br />我根本就不懂完成端口 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:18:00 <br />还没说 怎么标记 每次，，， <br />吉林-小伙&nbsp; 22:18:02 <br />一点都不懂 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:18:13 <br />你刚刚标记了 瓶子 <br />湖南-VC(215735031) 22:18:22 <br />hSocket 纸条<br />lpCompletionKey 瓶子 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:18:25 <br />现在要标记每次打水的动作 <br />湖南-VC(215735031) 22:18:37 <br />当纸条贴到瓶子的时候，，， <br />湖南-VC(215735031) 22:18:52 <br />对的 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:18:55 <br />这个应该是 lpOverlapped的工作了 <br />湖南-VC(215735031) 22:19:05 <br />我想想再怎么把WSARecv关联进来 <br />湖南-VC(215735031) 22:19:29 <br />阿姨，我要一瓶水。 <br />湖南-VC(215735031) 22:19:46 <br />WSARecv ，向系统请求一瓶水 <br />杭州 -(_少(26062281) 22:19:48 <br />我看了一部分关于iocp的资料 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:20:06 <br />IOCP要用，，，看没什么用的， <br />杭州 -(_少(26062281) 22:20:18 <br />但是 书上没有 vc 讲的那么生动 <br />湖南-VC(215735031) 22:20:30 <br />你不找阿姨要水， GetQueuedCompletionStatus 怎么会事先知道你要水？还把水瓶丢回给你？ <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:21:01 <br />vc至少沉淀了 6 7年了</p>
<p>恩，要是 post动作 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:22:55 <br />应该是调酒师 <br />北京&#8212;文文(15692091) 22:23:13 <br />北京小程序员求职。。。<br />有没有要招人的~ <br />吉林-小伙&nbsp; 22:23:11 <br />你们说下这个完成端口的原理呗 <br />吉林-小伙&nbsp; 22:23:19 <br />让我系统学习学习 <br />北京&#8212;文文(15692091) 22:23:26 <br />完成端口？ <br />湖南-VC(215735031) 22:23:23 <br />这里阿姨的地方有个小细节 <br />吉林-小伙&nbsp; 22:23:25 <br />用过几次 也不得要领 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:23:29 <br />你每次要调不同的酒水 都要下单 <br /></p>
<p><!--StartFragment -->
</p>
<div>吉林-小伙&nbsp;&nbsp;22:23:40<br />嗯<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:23:49<br />每个客户&nbsp;有自己的杯子<br />湖南-VC(215735031)&nbsp;22:24:00<br />你要，如果之前你要过一次，她没给完，这次她就会告诉你，0，还有水你没接完呢<br />吉林-小伙&nbsp;&nbsp;22:25:33<br />MSDN的例子&nbsp;有木有？<br />吉林-小伙&nbsp;&nbsp;22:25:45<br />IOCP的<br />吉林-小伙&nbsp;&nbsp;22:25:43<br />搜哪个API可以搜到<br />湖南-VC(215735031)&nbsp;22:25:54<br />小伙你哪里不懂<br />吉林-小伙&nbsp;&nbsp;22:26:11<br />我不明白为什么用完成端口&nbsp;会提高效率<br />吉林-小伙&nbsp;&nbsp;22:26:26<br />咱们从头开始？<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:26:39<br />OS维护线程池<br />湖南-VC(215735031)&nbsp;22:26:41<br />最明显的是&nbsp;ring3&nbsp;到&nbsp;ring0的缓存交换<br />湖南-VC(215735031)&nbsp;22:27:00<br />这里至少精简了一些细节<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:27:04<br />数据不一定，这个就算不iocp也有办法优化<br />北京&#8212;文文(15692091)&nbsp;22:27:08<br />小伙&nbsp;你找贝贝<br />北京&#8212;文文(15692091)&nbsp;22:27:27<br />我那个时候学完成端口也看不懂<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:27:26<br />我觉得是线程池<br />湖南-VC(215735031)&nbsp;22:27:27<br />可以从头开始，&nbsp;按你提问的方式<br />吉林-小伙&nbsp;&nbsp;22:27:33<br />好的<br />湖南-VC(215735031)&nbsp;22:27:38<br />刚我是说给自己，和听得懂的人的<br />吉林-小伙&nbsp;&nbsp;22:27:55<br />首先&nbsp;我创建一个完成端口<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:27:58<br />小伙和VC的基情<br />湖南-VC(215735031)&nbsp;22:28:46<br />恩，返回了一个句柄，创建Ok,<br />湖南-VC(215735031)&nbsp;22:28:52<br />这个没什么疑问把<br />吉林-小伙&nbsp;&nbsp;22:29:12<br />嗯&nbsp;拿socket说<br />湖南-VC(215735031)&nbsp;22:29:42<br />哪一步了<br />湖南-VC(215735031)&nbsp;22:30:08<br />有外部连接进来，准备关联？<br />吉林-小伙&nbsp;&nbsp;22:30:19<br />稍等<br />吉林-小伙&nbsp;&nbsp;22:30:22<br />我组织下语言<br />吉林-小伙&nbsp;&nbsp;22:30:26<br /><img src="file:///C:/Users/Error/AppData/Local/Temp/X@8%7DU9MLE%7DEBUE273)]9PGF.gif" sysface="13"  alt="" /><br />杭州&nbsp;-(_少(26062281)&nbsp;22:30:33<br />ACCEPTEX<br />吉林-小伙&nbsp;&nbsp;22:30:36<br />socket我理解成一个文件吧<br />吉林-小伙&nbsp;&nbsp;22:30:37<br />呵呵<br />湖南-VC(215735031)&nbsp;22:30:41<br />可以<br />吉林-小伙&nbsp;&nbsp;22:30:44<br />这样好说一点<br />吉林-小伙&nbsp;&nbsp;22:30:44<br />嗯<br />杭州&nbsp;-(_少(26062281)&nbsp;22:30:44<br />是不<br />吉林-小伙&nbsp;&nbsp;22:31:12<br />创建完成端口返回那个句柄&nbsp;就是&nbsp;对这个文件进行IO的一个通道<br />吉林-小伙&nbsp;&nbsp;22:31:28<br />比如文件是一个瓶子<br />吉林-小伙&nbsp;&nbsp;22:31:39<br />那这个句柄就是瓶口的标志<br />吉林-小伙&nbsp;&nbsp;22:31:48<br />这样理解有问题不？<br />湖南-VC(215735031)&nbsp;22:32:07<br />问题是没有，只是接下去会很复杂<br />杭州&nbsp;-(_少(26062281)&nbsp;22:32:35<br />关联端口<br />杭州&nbsp;-(_少(26062281)&nbsp;22:32:43<br />是不<br />吉林-小伙&nbsp;&nbsp;22:33:05<br />没事&nbsp;继续<br />湖南-VC(215735031)&nbsp;22:33:13<br />你文件是一个瓶子，那你跟创建完成的端口关联的时候的关系很模糊<br />湖南-VC(215735031)&nbsp;22:33:38<br />你上面的例子，瓶子不是独立的，把完成端口当成瓶口，&nbsp;牵扯太复杂了<br />吉林-小伙&nbsp;&nbsp;22:33:40<br />文件就是一个容器<br />广州-FEEL(515873448)&nbsp;22:33:47<br />哈哈哈哈哈哈&#8230;<br />(来自iPhone&nbsp;QQ:http://mobile.qq.com/v/)<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:33:51<br />是句柄<br />吉林-小伙&nbsp;&nbsp;22:33:52<br />用来存储各样的数据的<br />吉林-小伙&nbsp;&nbsp;22:34:17<br />要不咱俩私聊吧<br />吉林-小伙&nbsp;&nbsp;22:34:18<br />哈哈<br />湖南-VC(215735031)&nbsp;22:34:16<br />恩，<img src="file:///D:/Program%20Files%20(x86)/Tencent/QQ/PersonalData/85126585/Image/4[%7Dks5gs%25xphn3z%60dp%253%7Dkx.jpg"  alt="" />这是对的<br />湖南-VC(215735031)&nbsp;22:34:23<br />只是你换个比喻形式<br />吉林-小伙&nbsp;&nbsp;22:34:24<br />怕有些人烦<br />杭州&nbsp;-(_少(26062281)&nbsp;22:34:52<br />我也学习下<br />杭州&nbsp;-(_少(26062281)&nbsp;22:35:00<br />我有些地方没看懂<br />杭州&nbsp;-(_少(26062281)&nbsp;22:35:04<br />书上<br />吉林-小伙&nbsp;&nbsp;22:35:05<br />创建完成后<br />杭州&nbsp;-(_少(26062281)&nbsp;22:35:12<br />vc&nbsp;写的很生动&nbsp;哈哈<br /></div>
<p>吉林-小伙&nbsp; 22:35:20 <br />要用一个线程来等待客户端的请求&nbsp; <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 22:35:31 <br />今天的mvp <br />杭州 -(_少(26062281) 22:35:37 <br />这个一般算是主线程把 <br /><!--StartFragment -->
</p>
<div>杭州&nbsp;-(_少(26062281)&nbsp;22:35:46<br />用来启动&nbsp;其他的线程<br />吉林-小伙&nbsp;&nbsp;22:35:49<br />少&nbsp;不要纠结那些小事<br />吉林-小伙&nbsp;&nbsp;22:35:54<br /><img src="file:///C:/Users/Error/AppData/Local/Temp/X@8%7DU9MLE%7DEBUE273)]9PGF.gif" sysface="13"  alt="" /><br />杭州&nbsp;-(_少(26062281)&nbsp;22:35:55<br />额<br />杭州&nbsp;-(_少(26062281)&nbsp;22:35:56<br />好<br />吉林-小伙&nbsp;&nbsp;22:36:20<br />客户端请求连接了&nbsp;然后呢？<br />吉林-小伙&nbsp;&nbsp;22:36:33<br />然后WSARecv投递请求？<br />湖南-VC(215735031)&nbsp;22:36:41<br />你关联这块还没解释清楚呢<br />湖南-VC(215735031)&nbsp;22:36:47<br />跳过去，会越来越模糊的<br />吉林-小伙&nbsp;&nbsp;22:37:01<br />把完成端口和文件关联起来<br />吉林-小伙&nbsp;&nbsp;22:37:07<br />用的不就是Createxxxxxxxxxxxx吗？<br />湖南-VC(215735031)&nbsp;22:37:08<br />就是接收连接后，准备工作要做好<br />湖南-VC(215735031)&nbsp;22:37:34<br />恩，你说的是&#8220;关联&#8221;，还是真的能具体到细节呢<br />吉林-小伙&nbsp;&nbsp;22:37:50<br />具体细节<br />吉林-小伙&nbsp;&nbsp;22:38:00<br />私聊吧<br />吉林-小伙&nbsp;&nbsp;22:38:03<br />这里说太烦了<br />湖南-VC(215735031)&nbsp;22:38:05<br />我反问你，为什么要关联，关联以后在哪里使用<br />吉林-小伙&nbsp;&nbsp;22:38:12<br />OK<br />湖南-VC(215735031)&nbsp;22:38:25<br />可以<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:39:49<br />火神大大的坏<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:39:53<br />一个去学了，，，<br />吉林-小伙&nbsp;&nbsp;22:40:04<br /><img src="file:///C:/Users/Error/AppData/Local/Temp/%7B[W]SJ%601FUG&#243;J0GE%7DI0JW.gif" sysface="27"  alt="" /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:40:36<br />就这么点我先发博客去算了<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:40:36<br />就这么点我先发博客去算了<br />杭州&nbsp;-(_少(26062281)&nbsp;22:40:56<br />关联以后&nbsp;就为什么要WSARECV<br />杭州&nbsp;-(_少(26062281)&nbsp;22:41:09<br />不是有线程吗<br />南昌-贝贝(1125591)&nbsp;22:41:39<br />读是被动的<br />南昌-贝贝(1125591)&nbsp;22:41:50<br />被动操作要投递请求<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:43:13<br />貌似只有IOCP&nbsp;和&nbsp;overlaped&nbsp;的&nbsp;发送<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:43:17<br />是投递的<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:43:30<br />其他几个异步&nbsp;发送都是同步<br />杭州&nbsp;-(_少(26062281)&nbsp;22:44:18<br /><img src="file:///D:/Program%20Files%20(x86)/Tencent/QQ/PersonalData/85126585/Image/)uua11~nnym%25~n%25)32oux6s.jpg"  alt="" /><br />杭州&nbsp;-(_少(26062281)&nbsp;22:44:34<br /><img src="file:///D:/Program%20Files%20(x86)/Tencent/QQ/PersonalData/85126585/Image/a%7D_pb@umtw)irpcyqxbtt]f.jpg"  alt="" /><br />杭州&nbsp;-(_少(26062281)&nbsp;22:44:42<br />书上的代码<br /><br />杭州&nbsp;-(_少(26062281)&nbsp;22:44:57<br />一个是主线程中的<br />北京&#8212;文文(15692091)&nbsp;22:45:07<br />贝贝&nbsp;为啥当初我问你的时候你就只给我两页代码让我自己看呢~~<br />杭州&nbsp;-(_少(26062281)&nbsp;22:45:07<br />一个是线程里面的<br />杭州&nbsp;-(_少(26062281)&nbsp;22:45:21<br />::WSARecv(pPerHandle-&gt;s,&nbsp;&amp;buf,&nbsp;1,&nbsp;&amp;dwTrans,&nbsp;&amp;nFlags,&nbsp;&amp;pPerIO-&gt;ol,&nbsp;NULL);<br />杭州&nbsp;-(_少(26062281)&nbsp;22:45:28<br />都有这个函数<br />南昌-贝贝(1125591)&nbsp;22:45:28<br />完成端口吗?&nbsp;&nbsp;re:文文<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:45:30<br />应为缺乏讨论环境<br />杭州&nbsp;-(_少(26062281)&nbsp;22:45:37<br />接受有什么不同<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:45:39<br />这也是为啥我喜欢在群里边说<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:45:48<br />不喜欢私聊的原因<br />杭州&nbsp;-(_少(26062281)&nbsp;22:45:58<br />我就卡在这个地方&nbsp;其他都理解了<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:46:00<br />群聊是发散的<br />杭州&nbsp;-(_少(26062281)&nbsp;22:46:07<br />求教<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:46:33<br />我的个人理解<br />南昌-贝贝(1125591)&nbsp;22:46:39<br />投递一个异步读,在完成时会添加完成端口队列<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:46:55<br />你post以后&nbsp;&nbsp;由OS后台去帮你&nbsp;做实际的操作<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:47:09<br />然后你通过Get&#215;&#215;&#215;&nbsp;获取到这个结果<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:47:17<br />如果不用IOCP<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:47:46<br />你就要自己维护post队列&nbsp;&nbsp;自己用线程池操作&nbsp;自己枷锁&nbsp;&nbsp;然后还是类似的&nbsp;自己写一个&nbsp;Get&#215;&#215;<br />杭州&nbsp;-(_少(26062281)&nbsp;22:47:57<br />也就是说&nbsp;主线程中的WSARecv&nbsp;是投递到队列中的<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:48:30<br />贝贝比较权威<br />南昌-贝贝(1125591)&nbsp;22:49:43<br />所有被动操作,心须保持总是存在请求,(完成了立即投递新请求)<br />杭州&nbsp;-(_少(26062281)&nbsp;22:49:50<br /><img src="file:///D:/Program%20Files%20(x86)/Tencent/QQ/PersonalData/85126585/Image/5~_$uthgu%7D0tuw3fz4%60n~_8.jpg"  alt="" />这个句话&nbsp;要记录下来<br />杭州&nbsp;-(_少(26062281)&nbsp;22:50:58<br />对照代码看<br />杭州&nbsp;-(_少(26062281)&nbsp;22:51:02<br />我理解下<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;22:51:16<br />你们说伙神是不是大大的坏<br /></div>
<p><br /></p><img src ="http://www.cppblog.com/Error/aggbug/161848.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2011-12-09 23:01 <a href="http://www.cppblog.com/Error/articles/161848.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gethostbyname 获取不到ip地址 &amp; 被url坑了 &amp; 伙神读心术（VC专业群3 伙神读心术）</title><link>http://www.cppblog.com/Error/articles/161780.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Thu, 08 Dec 2011 10:17:00 GMT</pubDate><guid>http://www.cppblog.com/Error/articles/161780.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/161780.html</wfw:comment><comments>http://www.cppblog.com/Error/articles/161780.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/161780.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/161780.html</trackback:ping><description><![CDATA[<!--StartFragment -->


<div>中山-疯子(510776002)&nbsp;&nbsp;17:23:00<br />为什么我这样获得不了ip，到底哪里错了<img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/E9BIPM$_`9}`VS07`VD9H1F.gif" sysface="5" />，试了n次<br />hos&nbsp;=&nbsp;gethostbyname("http://www.baidu.com/");<br />int&nbsp;i=0;<br />while(hos-&gt;h_addr_list[i]!=0)<br />{<br />int&nbsp;*&nbsp;wIP=(int&nbsp;*)hos-&gt;h_addr_list[i];<br />addr=(in_addr&nbsp;*)wIP;<br />//str=inet_ntoa(*addr);<br />erfei.Format("序号:&nbsp;%d\tip:&nbsp;%x\n",i,*addr);<br />printf(erfei.GetBuffer());<br />i++;<br />}<br />深圳-守候(1015558947)&nbsp;&nbsp;17:23:42<br />下个断点&nbsp;自己看下&nbsp;<br />成都-大山(54130892)&nbsp;&nbsp;17:23:47<br />初始化网络环境了吗？<br /><br /><br />深圳-守候(1015558947)&nbsp;&nbsp;17:24:21<br />gethostbyname&nbsp;可以直接用吧&nbsp;还要初始化网络环境？？？<br />深圳-守候(1015558947)&nbsp;&nbsp;17:24:53<br />对了&nbsp;如果你上网用的是代理&nbsp;gethostbyname&nbsp;返回的貌似是代理服务器的地址<br />中山-疯子(510776002)&nbsp;&nbsp;17:25:03<br />哇，试出来了。<br />应该把&nbsp;gethostbyname("http://www.baidu.com/");<br />改为&nbsp;&nbsp;&nbsp;gethostbyname("www.baidu.com");<br />中山-疯子(510776002)&nbsp;&nbsp;17:25:32<br />可这是为什么呢，加上http头就不行<br />深圳-守候(1015558947)&nbsp;&nbsp;17:25:38<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/C{56~3P3_8`(W@3Y(FMXJBJ.gif" />才看出来&nbsp;你居然将URL当做&nbsp;...<br />中山-疯子(510776002)&nbsp;&nbsp;17:25:48<br />求解释<br />成都-大山(54130892)&nbsp;&nbsp;17:26:02<br />http不是网址的一部分好不<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:26:26<br />host<br />重庆-山士(369347512)&nbsp;&nbsp;17:26:28<br />是个协议<br />(QQ&nbsp;for&nbsp;Pad支持讨论组会话啦!http://im.qq.com/pad)&nbsp;<br />中山-疯子(510776002)&nbsp;&nbsp;17:26:34<br />现在才知道<img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/)W_[PKS_35XA~%$SQ0_SRK9.gif" sysface="38" /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:26:35<br />you&nbsp;know&nbsp;?<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:26:38<br />host&nbsp;name<br />济南_deny(547792055)&nbsp;&nbsp;17:26:47<br />疯子在搞什么程序？<br /><br />中山-疯子(510776002)&nbsp;&nbsp;17:26:47<br />i&nbsp;know<br />中山-疯子(510776002)&nbsp;&nbsp;17:27:01<br />就是获得域名ip<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:52:09<br />呵呵&nbsp;<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:52:29<br />看你们讨论问题<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:52:37<br />我就能知道你们每个人的性格<br />深圳-守候(1015558947)&nbsp;&nbsp;17:55:13<br />说说看&nbsp;我是啥性格<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:55:39<br />呵呵&nbsp;其实这里的很多人&nbsp;都有一个通病&nbsp;包括我在内<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:56:07<br />我就反思过&nbsp;然后我发现你们也一样&nbsp;哈哈<br />中山-疯子(510776002)&nbsp;&nbsp;17:56:11<br />说吧，自我检讨<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:56:48<br />你们自己想吗<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:56:52<br />为什么要我说啊<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:57:12<br />我说出来了&nbsp;有些人觉得自己有这毛病&nbsp;改了&nbsp;有些人还得在心里骂我<br />中山-疯子(510776002)&nbsp;&nbsp;17:57:15<br />我问的问题太简单了<img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/{[W]SJ`1FUG%F3J0GE}I0JW.gif" sysface="27" /><br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:57:22<br />不是<br />中山-疯子(510776002)&nbsp;&nbsp;17:58:03<br />哎，说吧，我不怪<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:58:13<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/X@8}U9MLE}EBUE273)]9PGF.gif" sysface="13" /><br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:59:21<br />自己想吧&nbsp;其实挺好玩的<br />中山-疯子(510776002)&nbsp;&nbsp;17:59:52<br />我就是吃得太多<img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/)QN1UH78VKP2T7)IA]ZM(FW.gif" sysface="97" /><br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:00:00<br />要敢于正视自己的缺点&nbsp;自己的不足<br />深圳-守候(1015558947)&nbsp;&nbsp;18:01:47<br />你直奔重点行不&nbsp;看你说了一堆&nbsp;全是废话<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:02:25<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/8{U`QQB5X27@C_FO](KQ(4G.gif" sysface="28" /><br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:02:35<br />其实我事闲的蛋疼<br />深圳-守候(1015558947)&nbsp;&nbsp;18:02:56<br />你写驱动的呢&nbsp;<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:02:54<br />哥啥问题<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:03:06<br />哥是比较厚脸皮的<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:03:12<br />不怕被鄙视<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:03:19<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/D}5RZEM4MU~ZS1Q]N0]4RFB.gif" /><br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:04:29<br />我就吹吹牛B你们怎么还都刨根问底儿呢&nbsp;你们是刨根问底儿栏目组的啊<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:05:01<br />在这里被鄙视总比将来被鄙视的代价小<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:05:04<br />这个算的清楚<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:05:18<br />求鄙视<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:05:21<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/XSGHT2RDW_{ZNHPYQQI%]IF.gif" /><br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:06:16<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/ZO8ZFQ}SC%T]0ORRM3~93KP.jpg" /><br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:06:20<br />从这句话里<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:06:25<br />你能看出什么不？<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:06:34<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/X@8}U9MLE}EBUE273)]9PGF.gif" sysface="13" />拿守候开刀&nbsp;<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:06:35<br />哈哈<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:06:42<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/D}5RZEM4MU~ZS1Q]N0]4RFB.gif" />这个人很牛？<br />福建-ldh(1553408169)&nbsp;&nbsp;18:06:49<br />为什么一定要被鄙视<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:06:52<br />你看看上下文<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:07:03<br />这是自嘲，也是自信的表现<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:07:29<br />我觉得这是不敢正视自己的不足<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:08:06<br />不一定<br />深圳-守候(1015558947)&nbsp;&nbsp;18:08:11<br />哈哈&nbsp;被鄙视了&nbsp;<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:08:21<br />哈哈<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:08:30<br />其实你最开始看出来了<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:08:41<br />只不过没认为这个地方有错<br /><!--StartFragment -->


<div>吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:09:21<br />因为你并不确定gethostname的参数到底应该怎么传<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:09:46<br />等&nbsp;疯子&nbsp;发出解决方案了&nbsp;.........<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:09:50<br />不说啦&nbsp;哈<br />深圳-守候(1015558947)&nbsp;&nbsp;18:10:03<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/%AUBPCHM%P]$]F4N4ZK{BBO.gif" /><br />深圳-守候(1015558947)&nbsp;&nbsp;18:10:31<br />知道就行了&nbsp;干嘛说出来呢&nbsp;丑大了<br />湖南-VC(215735031)&nbsp;&nbsp;18:10:48<br />哈哈，疯子的问题我没注意到细节<br />深圳-守候(1015558947)&nbsp;&nbsp;18:10:53<br />装逼遭雷劈啊&nbsp;以后我要低调<br />湖南-VC(215735031)&nbsp;&nbsp;18:10:51<br />所以没发言，<br />湖南-VC(215735031)&nbsp;&nbsp;18:10:58<br />但是我把他的改装了下，<br />湖南-VC(215735031)&nbsp;&nbsp;18:11:02<br />他的代码编码也有问题<br />湖南-VC(215735031)&nbsp;&nbsp;18:11:18<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/(]HO`CT5)6MBX]N]}57L)SK.jpg" /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:11:26<br />这是作为神的尴尬，，，<br />湖南-VC(215735031)&nbsp;&nbsp;18:11:31<br />我改完后是这样，<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:11:35<br />一个神，是不能犯错的，，，<br />湖南-VC(215735031)&nbsp;&nbsp;18:11:43<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/3%_$6M@)E0EZ@X0SWR1_TJN.jpg" />我自己这样写的，没留意他的<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:12:03<br />结论呢<br />湖南-VC(215735031)&nbsp;&nbsp;18:12:29<br />你看他的发言，他之前说能取到百度的一个IP<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:12:40<br />今天的会议总结<br />《gethostname&nbsp;获取不到ip地址&nbsp;和&nbsp;url&nbsp;and&nbsp;伙神读心术（VC专业群3&nbsp;伙神读心术）》<br />湖南-VC(215735031)&nbsp;&nbsp;18:12:41<br />那个时候他一直就有填HTTP的<br />湖南-VC(215735031)&nbsp;&nbsp;18:12:51<br />所以不好说<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:13:37<br />填写&nbsp;你这个&nbsp;应该没问题把<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:13:48<br />反正是走nds协议去找name<br />湖南-VC(215735031)&nbsp;&nbsp;18:13:53<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/[(O6_EHT43C37CL5ZEKO@{X.jpg" /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:14:04<br />完整url是不对的<br />湖南-VC(215735031)&nbsp;&nbsp;18:14:10<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/C88S(6T@)ZQHJ9HN3GDQX(7.jpg" /><br />湖南-VC(215735031)&nbsp;&nbsp;18:14:17<br />109是我本地IP<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:14:34<br />服务器架在哪<br />深圳-守候(1015558947)&nbsp;&nbsp;18:14:40<br />他都不调用WSAGetLastError&nbsp;查看错误码的&nbsp;<br />湖南-VC(215735031)&nbsp;&nbsp;18:14:37<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/R2)$X_R}]E]UE$Z$L3Q[P41.jpg" />&nbsp;<img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/{[W]SJ`1FUG%F3J0GE}I0JW.gif" sysface="27" /><br />深圳-守候(1015558947)&nbsp;&nbsp;18:14:42<br />囧死了<br />湖南-VC(215735031)&nbsp;&nbsp;18:14:45<br />妈的&nbsp;什么时候又跳掉了<br />深圳-守候(1015558947)&nbsp;&nbsp;18:14:58<br />else里要写&nbsp;WSAGetLastError&nbsp;输出错误码代码<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:14:58<br />淡定，，，<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:15:20<br />深圳-守候(1015558947)&nbsp;&nbsp;18:14:58<br />else里要写&nbsp;WSAGetLastError&nbsp;输出错误码代码<br /><br />新人都不写，就跟我以前不写&nbsp;assert一样<br />深圳-守候(1015558947)&nbsp;&nbsp;18:15:31<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/KCJ3PL]_Y~]DR0DNUSG15KA.gif" />我被鄙视了<br />深圳-守候(1015558947)&nbsp;&nbsp;18:15:47<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/DQBTZ_UC(G@STWO_1R2U_Q4.gif" /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:15:48<br />gethostname&nbsp;获取不到ip地址&nbsp;&amp;&nbsp;被url坑了&nbsp;&amp;&nbsp;伙神读心术（VC专业群3&nbsp;伙神读心术）<br />湖南-VC(215735031)&nbsp;&nbsp;18:15:49<br />我的代码是复制的疯子的，改造过，什么时候去的http://头，自己也没留意<br />湖南-VC(215735031)&nbsp;&nbsp;18:15:53<br />所以没回答他的问题<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:16:17<br />《gethostname&nbsp;获取不到ip地址&nbsp;&amp;&nbsp;被url坑了&nbsp;&amp;&nbsp;伙神读心术（VC专业群3&nbsp;伙神读心术）》<br /><br />title&nbsp;需要加上守候大神么？<br /><br />嗯，我以前的习惯是自己测试在回答<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:16:22<br />现在也tmd浮躁了<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:16:24<br />要改<br /><!--StartFragment -->

<div>武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:16:17<br />《gethostname&nbsp;获取不到ip地址&nbsp;&amp;&nbsp;被url坑了&nbsp;&amp;&nbsp;伙神读心术（VC专业群3&nbsp;伙神读心术）》<br /><br />title&nbsp;需要加上守候大神么？<br /><br />嗯，我以前的习惯是自己测试在回答<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:16:22<br />现在也tmd浮躁了<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:16:24<br />要改<br />深圳-守候(1015558947)&nbsp;&nbsp;18:17:09<br /><img src="file:///D:/QQ2010/Users/85126585/Image/5@GQ86@B)CCMW)O4LKG)]H5.jpg"  alt="" /><br />深圳-守候(1015558947)&nbsp;&nbsp;18:17:17<br />这API&nbsp;我日哦&nbsp;<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:17:34<br />temlate是啥<br />深圳-守候(1015558947)&nbsp;&nbsp;18:17:43<br />15个参数....<br />深圳-守候(1015558947)&nbsp;&nbsp;18:18:11<br />模板&nbsp;<br />深圳-守候(1015558947)&nbsp;&nbsp;18:18:28<br />图形里面说的&nbsp;ROI&nbsp;即为感兴趣的对象<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:18:33<br />牛逼<br />湖南-VC(215735031)&nbsp;&nbsp;18:18:36<br />3D编程，这点参数正常<br />深圳-守候(1015558947)&nbsp;&nbsp;18:18:41<br />其实我也不懂<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:18:45<br />这是哪个库？<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:18:54<br />boost？<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:19:06<br />3D的都一套一套的<br />深圳-守候(1015558947)&nbsp;&nbsp;18:19:11<br />HDevelop&nbsp;封装好的API<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:19:55<br />真现金<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:20:06<br />先进<br />深圳-守候(1015558947)&nbsp;&nbsp;18:20:17<br />创建一个学习的对象&nbsp;以金字塔的形式&nbsp;<br />深圳-守候(1015558947)&nbsp;&nbsp;18:20:31<br />图形匹配算法里的&nbsp;金字塔算法创建的模板<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:20:41<br />《gethostname&nbsp;获取不到ip地址&nbsp;&amp;&nbsp;被url坑了&nbsp;&amp;&nbsp;伙神读心术（VC专业群3&nbsp;伙神读心术）&nbsp;<br />》<br />http://www.cppblog.com/Error/articles/161780.html<br />深圳-守候(1015558947)&nbsp;&nbsp;18:20:52<br />他妈的&nbsp;3种尺寸<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:21:13<br />图像的东西得慢慢玩，，，没基础搞不动的，，，<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:21:23<br />找PM要外援吧<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:21:30<br />不想项目要砸了<br />湖南-VC(215735031)&nbsp;&nbsp;18:21:55<br /><img src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/{[W]SJ`1FUG%F3J0GE}I0JW.gif" sysface="27"  alt="" />你就不能把我的剔掉么<br />深圳-守候(1015558947)&nbsp;&nbsp;18:22:11<br /><img src="file:///D:/QQ2010/Users/85126585/Image/}AZT(%0W~U1RQF{N)LCFG@I.gif"  alt="" />不着<br />深圳-守候(1015558947)&nbsp;&nbsp;18:22:25<br />不找&nbsp;我搞的差不多了&nbsp;<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:22:39<br /><img src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/D}5RZEM4MU~ZS1Q]N0]4RFB.gif"  alt="" />不踢&nbsp;除非你强烈要求<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:23:09<br />你要被T？<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:23:13<br />可以啊<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:23:15<br /><img src="file:///D:/QQ2010/Users/85126585/Image/}AZT(%0W~U1RQF{N)LCFG@I.gif"  alt="" /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:23:25<br />《gethostname&nbsp;获取不到ip地址&nbsp;&amp;&nbsp;被url坑了&nbsp;&amp;&nbsp;伙神读心术（VC专业群3&nbsp;伙神读心术）&nbsp;<br />》<br />&nbsp;http://www.cppblog.com/Error/articles/161780.html<br />武汉-不语(86990476)&nbsp;&nbsp;18:23:25<br /><img src="file:///D:/QQ2010/Users/85126585/Image/`DLF~F5S3TG{}CBOY~4`Z`H.gif"  alt="" /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:23:27<br />他说这个<br />深圳-守候(1015558947)&nbsp;&nbsp;18:24:21<br />小伙还没下班？<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:24:25<br />6点半<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:24:33<br />哈哈&nbsp;明天周五啦&nbsp;爽啊<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:24:53<br />我知道他说这个<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:25:00<br />我事故意曲解他的意思&nbsp;哈哈<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:25:53<br />明天讨论神马<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:25:55<br />想好没？<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:26:37<br />你们看&nbsp;守候如果以后有针对我&nbsp;<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:26:43<br />其实今天这个讨论应该还没结束<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:26:49<br />那守候这个人又多了一个缺点<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:27:03<br /><img src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/X@8}U9MLE}EBUE273)]9PGF.gif" sysface="13"  alt="" /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:27:08<br />最后最沉稳的&nbsp;湖南VC大哥提出来的观点<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;18:27:11<br />晚上回去继续讨论<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:27:18<br />可以继续延伸下去<br />深圳-守候(1015558947)&nbsp;&nbsp;18:27:24<br /><img src="file:///D:/QQ2010/Users/85126585/Image/[QKW[~VBNF0$C0OX54H]]S4.gif"  alt="" /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:27:38<br />守候应该是<br />湖南-VC(215735031)&nbsp;&nbsp;18:27:38<br />我用的二级域名<br />湖南-VC(215735031)&nbsp;&nbsp;18:27:42<br />他解析的IP不对<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:28:10<br />嗯，这个要去看nds协议规范了<br />湖南-VC(215735031)&nbsp;&nbsp;18:28:16<br /><img src="file:///D:/QQ2010/Users/85126585/Image/~URHZ$5KWX7}G$]06]I4CDP.jpg"  alt="" /><br />湖南-VC(215735031)&nbsp;&nbsp;18:28:21<br />。现在又对了<br />湖南-VC(215735031)&nbsp;&nbsp;18:28:27<br />它这个还是灵活的哦<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:28:32<br />坑了爹了，，，<br />湖南-VC(215735031)&nbsp;&nbsp;18:28:43<br /><img src="file:///D:/QQ2010/Users/85126585/Image/`QWASM5{8`R$}XHXXZXFG7K.jpg"  alt="" /><br />湖南-VC(215735031)&nbsp;&nbsp;18:29:22<br />这也是我没回的原因，&nbsp;我当时取了3次，也只有1次对<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:29:26<br />刚刚哪次&nbsp;&nbsp;查出来&nbsp;GetLasterror&nbsp;没问题么？<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:29:44<br />我草&nbsp;这里还真的有个吭<br />湖南-VC(215735031)&nbsp;&nbsp;18:29:56<br />应该不是错，可能是你提的DNA问题搞不定<br />湖南-VC(215735031)&nbsp;&nbsp;18:30:07<br />我加个http看看<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:30:15<br />嗯<br />湖南-VC(215735031)&nbsp;&nbsp;18:30:35<br /><img src="file:///D:/QQ2010/Users/85126585/Image/5Q37C%S})(KZ7VVL]8R(M1X.jpg"  alt="" /><br />湖南-VC(215735031)&nbsp;&nbsp;18:30:52<br /><img src="file:///D:/QQ2010/Users/85126585/Image/X3%H)8HPNCVSLG0@V1PPL[D.jpg"  alt="" /><br />湖南-VC(215735031)&nbsp;&nbsp;18:30:56<br />15分钟前发的<br />湖南-VC(215735031)&nbsp;&nbsp;18:31:13<br />这个162应该是美步域名的某个主机的IP<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:32:43<br /><img src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/[GW7A%A(T[]I@2DZWRC{_US.gif"  alt="" />他应该每次都是返回解析结果的<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:34:12<br />我知道了，可能你的域名提供商&nbsp;不稳定<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:34:43<br />我试试看<br />湖南-VC(215735031)&nbsp;&nbsp;18:35:09<br /><img src="file:///D:/QQ2010/Users/85126585/Image/OS9JSC)[%ZL3PXPQ3FXEC`H.jpg"  alt="" /><br />湖南-VC(215735031)&nbsp;&nbsp;18:35:37<br />是有可能服务器正在解析，那个时候。证据是，我一会再间断性测试一二次 <br /><!--StartFragment -->

<div>武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:58:53<br /><img src="file:///D:/QQ2010/Users/85126585/Image/W71Q46{4QM26MFVZ1W}[Q7I.jpg"  alt="" /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:59:00<br />实验百度是每次都正确的<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;18:59:23<br />湖南VC应该是域名商的问题了&nbsp;，回家，，，nnd<br /></div><br /></div></div></div> <img src ="http://www.cppblog.com/Error/aggbug/161780.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2011-12-08 18:17 <a href="http://www.cppblog.com/Error/articles/161780.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WM_COPYDATA 的一些细节 共享内存 生命周期等等 杂论  （VC专业群3 贝神参与）</title><link>http://www.cppblog.com/Error/articles/161674.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Wed, 07 Dec 2011 09:11:00 GMT</pubDate><guid>http://www.cppblog.com/Error/articles/161674.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/161674.html</wfw:comment><comments>http://www.cppblog.com/Error/articles/161674.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/161674.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/161674.html</trackback:ping><description><![CDATA[<!--StartFragment -->
 


<div>
<p>武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 16:37:38 <br />嗯</p>
<p>讨论一个VC的问题&nbsp; <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 16:37:51 <br />夸进程的 WM_DATACOPY <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 16:38:00 <br />的内存管理 <br />武汉-Error&lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#114;&#114;&#111;&#114;&#99;&#112;&#112;&#64;&#113;&#113;&#46;&#99;&#111;&#109;">errorcpp@qq.com</a>&gt; 16:38:07 <br />谁先发言？ <br /></p><br />南昌-贝贝(1125591)&nbsp;&nbsp;16:38:29<br />进程内没必要用这个<br />湖南-VC(215735031)&nbsp;&nbsp;16:39:03<br />不知道把clicpsrv服务关掉，这个还会不会调用成功<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:39:03<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/D}5RZEM4MU~ZS1Q]N0]4RFB.gif" />&nbsp;那内存是那个牛管理的<br />南昌-贝贝(1125591)&nbsp;&nbsp;16:39:20<br />共享内存啊<br />武汉-不语(86990476)&nbsp;&nbsp;16:39:22<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/D}5RZEM4MU~ZS1Q]N0]4RFB.gif" /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:39:30<br />如果偶没记错<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:39:54<br />网狐的代码&nbsp;是&nbsp;在把栈上的一块内存的地址<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:40:08<br />当作copydata结构体的指针域<br />湖南-VC(215735031)&nbsp;&nbsp;16:40:16<br />error再搞网狐？<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:40:17<br />sendmessage<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:40:19<br />出去的<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:40:31<br />这样就说明<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:40:43<br />系统&nbsp;应该接管了这块内存<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:40:55<br />谁知道这其中是怎么管理的<br />湖南-VC(215735031)&nbsp;&nbsp;16:41:04<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/]BYE9X1]PEGX{5](K(2{VI4.jpg" /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:41:07<br />是的，看了好久了。<br />最近开始看客户端了<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:41:34<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/D}5RZEM4MU~ZS1Q]N0]4RFB.gif" />&nbsp;其实我只关系生命周期<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:41:46<br />无所不能的贝贝神<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:41:48<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/M_([R88@7TKFQB(KV(X6SGF.gif" /><br />南昌-贝贝(1125591)&nbsp;&nbsp;16:42:13<br />就是共享内存呀<br />中山-疯子(510776002)&nbsp;&nbsp;16:42:03<br />贝神学的太快了<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:42:42<br />嗯&nbsp;假设他就是共享内存<br />那是谁申请&nbsp;谁释放的呢？<br />南昌-贝贝(1125591)&nbsp;&nbsp;16:42:57<br />发送者申请,发送者释放<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:43:56<br />嗯，假设是发送至申请&nbsp;发送者释放<br />那人家那里放的是一个指针地址，接受的时候咋成了共享内存了<br /><br />偶去看看接收代码<br />南昌-贝贝(1125591)&nbsp;&nbsp;16:44:57<br />进程使用的内存都是由系统在物理存储里面调拨的....然后映射到这个进程的...系统多映射一个进程,有什么不可以的咧?<br />中山-疯子(510776002)&nbsp;&nbsp;16:44:55<br />仙路尽头谁为峰，一见贝神道成空<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:45:57<br />那就是说，发送的结构体&nbsp;和&nbsp;接受的结构体&nbsp;的那个指针域<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:46:06<br />可能不是一个值<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:46:09<br />对吧？<br />南昌-贝贝(1125591)&nbsp;&nbsp;16:46:18<br />什么东东<br />南昌-贝贝(1125591)&nbsp;&nbsp;16:46:20<br />听不懂<br />湖南-VC(215735031)&nbsp;&nbsp;16:46:43<br />A进程里发的数据的内存地址&nbsp;跟B接收的内存地址<br />南昌-贝贝(1125591)&nbsp;&nbsp;16:46:52<br />发送的时候把这个结构体中指针指向的内存块(指定大小),映射到目标进程&nbsp;<br />中山-疯子(510776002)&nbsp;&nbsp;16:47:10<br />对了，问下如何追踪到WM_COPYDATA的处理函数，这个问题难了我好久，一直没有解决<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:48:11<br />嗯，贝贝说的原理。偶懂了，偶现在想确认下这个现象，，，<br /><br />比较懒，没写测试就直接问了，，，<br />见谅，，，<br /><br /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:48:20<br />typedef&nbsp;struct&nbsp;tagCOPYDATASTRUCT&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ULONG_PTR&nbsp;dwData;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cbData;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PVOID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpData;&nbsp;<br />}&nbsp;COPYDATASTRUCT,&nbsp;*PCOPYDATASTRUCT;&nbsp;<br /><br /><br />这个结构体的&nbsp;&nbsp;&nbsp;dwData<br />中山-疯子(510776002)&nbsp;&nbsp;16:48:21<br />应为是在另一个进程中，不知怎么办<br />湖南-VC(215735031)&nbsp;&nbsp;16:48:41<br />恩，你测试的时候顺便测试下我那个疑问哈<br />南昌-贝贝(1125591)&nbsp;&nbsp;16:48:47<br />dwData&nbsp;就是传一个数字<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:48:46<br />在发送进程的值&nbsp;&nbsp;和&nbsp;在另一进程中&nbsp;收到的值<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:48:52<br />是不相同的<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:49:13<br />湖南&nbsp;是和我考虑的一个问题吧？<br />湖南-VC(215735031)&nbsp;&nbsp;16:49:28<br />是的，<br />湖南-VC(215735031)&nbsp;&nbsp;16:49:42<br />不过你观察的是它们通信的过程<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:49:51<br />嗯，我看的是现象<br />湖南-VC(215735031)&nbsp;&nbsp;16:50:00<br />我还顺带观察下这个过程是不是由剪贴板服务维护的<br />中山-疯子(510776002)&nbsp;&nbsp;16:50:01<br />就是另一个进程处理WM_COPYDATA的函数<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:50:21<br />还有资源释放的过程<br />湖南-VC(215735031)&nbsp;&nbsp;16:50:33<br />如果这个服务关掉了，还有没有。<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:50:38<br />按照贝贝说的来理解，我就懂了一点了<br />湖南-VC(215735031)&nbsp;&nbsp;16:51:15<br />说到底，还是WINDOWS的内存划分不清晰啊。<br />湖南-VC(215735031)&nbsp;&nbsp;16:51:27<br />共享内存，内存地址是多少<br />湖南-VC(215735031)&nbsp;&nbsp;16:51:57<br />kernel32.dll&nbsp;类似这种东东，系统都把它们映射到进程的&nbsp;0x800以上<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:52:06<br />send的时候OS只是映射了一下<br />当被映射的内存释放以后，自然数据就失效了<br /><br />不过这还有一个没解决的问题，数据失效了，映射又由谁清理<br />湖南-VC(215735031)&nbsp;&nbsp;16:52:23<br />按贝贝说的说法，剪贴板内容也应该映射到某个地址。<br />南昌-贝贝(1125591)&nbsp;&nbsp;16:52:24<br />kernel32.dll&nbsp;类似这种东东，系统都把它们映射到进程的&nbsp;0x800以上<br />谁说的<br />湖南-VC(215735031)&nbsp;&nbsp;16:52:36<br />默认情况<br />南昌-贝贝(1125591)&nbsp;&nbsp;16:52:50<br />0x80000000&nbsp;以上就错<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:52:56<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/D}5RZEM4MU~ZS1Q]N0]4RFB.gif" />敢在贝爷面前玩小聪明<br />南昌-贝贝(1125591)&nbsp;&nbsp;16:53:07<br />剪贴版不一定是共享内存<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:53:22<br />贝贝&nbsp;偶的问题还没回答完毕呢<br /><br />映射我理解了<br />湖南-VC(215735031)&nbsp;&nbsp;16:53:32<br />你理解什么了。<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:53:36<br />但是这个映射最终还是要被&nbsp;取消<br /><br />这一部咋弄<br />湖南-VC(215735031)&nbsp;&nbsp;16:53:47<br />贝贝刚都说了，&nbsp;<img alt="" src="file:///D:/QQ2010/Users/85126585/Image/M(}NK)QS)V89(9`XBUL_N4D.jpg" /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:54:03<br />就是OS没有拷贝send的数据，只是把两个进程的地址映射了下<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:54:26<br />偶不关系那个过程，我值关注数据传递的结果<br />湖南-VC(215735031)&nbsp;&nbsp;16:54:36<br />每一个进程都可以访问剪贴板的数据，<br />湖南-VC(215735031)&nbsp;&nbsp;16:54:50<br />你A进程发送的数据肯定也是进了剪贴板的<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:55:02<br />现在的结果：<br />1.没有传递<br />2.是地址映射<br />3.系统完成的映射<br />4.我不知道神马时候映射被取消<br />湖南-VC(215735031)&nbsp;&nbsp;16:55:32<br />大哥，我们的疑问其实一样<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:55:56<br />否则我大量&nbsp;发送DATACOPY&nbsp;这样两个进程的数据不是全部被映射了，，，<br /><br />所以，偶要知道这个映射啥时候取消<br />湖南-VC(215735031)&nbsp;&nbsp;16:56:15<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/KY4XTWBE3}NPKJE4}A5[7IR.jpg" /><br />湖南-VC(215735031)&nbsp;&nbsp;16:56:22<br />A&nbsp;B&nbsp;是进程&nbsp;C是剪贴板<br />南昌-贝贝(1125591)&nbsp;&nbsp;16:56:31<br /><img alt="" src="file:///D:/QQ2010/Users/85126585/Image/M(}NK)QS)V89(9`XBUL_N4D.jpg" />我也不知道怎么解释,可能我说的不准确,是因为我要表达的是<br /><br />如果你在记事本中复制一个字符串那是共享内存(服务里面的)<br />如果你的程序会接收处理剪贴版消息,那会有另一种行为...大多数人都应该见过,在WORD中复制表格.在词本中粘贴是纯文字&nbsp;,在QQ上粘贴是图像<br />南昌-贝贝(1125591)&nbsp;&nbsp;16:56:41<br />如果单纯共享一次.那怎么做得到<br />湖南-VC(215735031)&nbsp;&nbsp;16:57:17<br />我记得在VC中使用WM_COPYDATA&nbsp;要显示的指定<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:57:21<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/T6OQ[5(U9Z_O]6A0_~KE5{W.gif" />&nbsp;还是没有解释&nbsp;4.映射（共享）啥时候取消嘛<br />湖南-VC(215735031)&nbsp;&nbsp;16:57:45<br />这可能说明了，&nbsp;<img alt="" src="file:///D:/QQ2010/Users/85126585/Image/HFV9YF4F1FSVH3BC@990EFY.jpg" /><br />南昌-贝贝(1125591)&nbsp;&nbsp;16:57:47<br />我知道水神主要的疑问就是&nbsp;WM_COPYDATA&nbsp;何时取消映射<br />&nbsp;&nbsp;只需要回答你(PostMessage-&gt;WM_COPYDATA是永不会成功的)<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:58:20<br />send返回的时候么<br /><br />列个是同步的？<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:58:29<br />ok我的问题差不多解决了<br />湖南-VC(215735031)&nbsp;&nbsp;16:58:31<br />估计每个进程访问到的剪贴板内存都是系统分配的一个&#8221;映像&#8220;<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;16:58:52<br />VC的&nbsp;和&nbsp;ole对象神马相关&nbsp;还有com模型，，，这个话题老大了，，，<br />南昌-贝贝(1125591)&nbsp;&nbsp;16:59:13<br />COM我也是笨蛋,&nbsp;&nbsp;太久远了<br />湖南-VC(215735031)&nbsp;&nbsp;16:59:49<br />我的疑问是，系统给每个进程都留了一个后门，可以访问一块共同的内存？<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:00:04<br />ole模型好像是这样<br />湖南-VC(215735031)&nbsp;&nbsp;17:00:23<br />还是进程需要访问&#8220;剪贴板&#8221;的时候，显示的给它映射一个<br />中山-疯子(510776002)&nbsp;&nbsp;17:00:34<br />追踪WM_COPYDATA<img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/52W[C~~FFQ[27)18U93ZOWB.gif" sysface="111" /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:01:05<br />&nbsp;中山-疯子(510776002)&nbsp;&nbsp;17:00:34<br />追踪WM_COPYDATA<img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/52W[C~~FFQ[27)18U93ZOWB.gif" sysface="111" /><br /><br />自己打log<br />湖南-VC(215735031)&nbsp;&nbsp;17:01:11<br />如果是后门，水神你那个A发起，B收到的就是同一个地址才对<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:01:13<br />或者用windbg<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:01:26<br />是映射<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:01:31<br />不同的进程<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:01:39<br />地址空间不同<br />湖南-VC(215735031)&nbsp;&nbsp;17:01:43<br />如果是谁用到，给谁映射，那A发起的被映射到系统，再被映射到B进程<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:01:49<br />是的<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:01:54<br />谁send<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:01:59<br />岁映射<br />湖南-VC(215735031)&nbsp;&nbsp;17:02:18<br />我现在不好写测试，&nbsp;你A发起的，&nbsp;剪贴板能看到不<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:02:34<br />不然生命周期不好控制<br /><br />以上是贝神语录心得<br /><br />我现在也没环境测试，，， <br /><!--StartFragment -->



<div>湖南-VC(215735031)&nbsp;17:03:04&nbsp;<br />我晚上测试下<br />湖南-VC(215735031)&nbsp;17:03:16&nbsp;<br />如果第三方剪贴板能读到这部分数据的话，<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;17:03:39&nbsp;<br />映射是系统控制的，这个不好说<br />吉林-小伙?&nbsp;17:03:47&nbsp;<br />不可能是剪贴板的<br />湖南-VC(215735031)&nbsp;17:04:05&nbsp;<br />小伙想说SendMesaage指定了HWND？<br />吉林-小伙?&nbsp;17:04:07&nbsp;<br />进程间通信&nbsp;有管道&nbsp;有消息&nbsp;有剪贴板&nbsp;有socket&nbsp;等等<br />吉林-小伙?&nbsp;17:04:23&nbsp;<br />都把消息和剪贴板分开来说了<br />吉林-小伙?&nbsp;17:04:48&nbsp;<br />还有&nbsp;用SendMessage&nbsp;WM_COPYDATA&nbsp;数据量大会死锁<br />吉林-小伙?&nbsp;17:05:59&nbsp;<br />WM_COPYDATA就是内存映射实现的<br />中山-疯子(510776002)&nbsp;17:06:52&nbsp;<br />进程通信比较好的话就是本机网络通信127.0.0.1<br />成都-祁愿(130048)&nbsp;17:07:23&nbsp;<br />命名管道。<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;17:07:36&nbsp;<br />这样有开销<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;17:07:44&nbsp;<br />映射是开销最小的<br />湖南-VC(215735031)&nbsp;17:08:06&nbsp;<br />WM_COPYDATA要指定目标ＨＷＮＤ<br />湖南-VC(215735031)&nbsp;17:08:22&nbsp;<br />跟所有进程都能访问到的剪贴板方式不一样<br />中山-疯子(510776002)&nbsp;17:08:23&nbsp;<br />大数据就在磁盘建立个文件，并通过WM_COPYDATA通知对方<br />南昌-贝贝(1125591)&nbsp;17:08:54&nbsp;<br />管道的内部实现就是共享内存<br />南昌-贝贝(1125591)&nbsp;17:09:08&nbsp;<br />本机管道<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;17:09:27&nbsp;<br />嗯&nbsp;本地回环soket呢？<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;17:09:35&nbsp;<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/(1{D$M8LMQ9{JDUTTUT%%OU.gif" /><br />南昌-贝贝(1125591)&nbsp;17:09:51&nbsp;<br />回环好像也是共享内存<br />南昌-贝贝(1125591)&nbsp;17:10:03&nbsp;<br />回环Socket&nbsp;连TDI层好像都没到<br />吉林-小伙?&nbsp;17:10:15&nbsp;<br />TDI？<br />南昌-贝贝(1125591)&nbsp;17:10:37&nbsp;<br />NDIS层一定没到<br />南昌-贝贝(1125591)&nbsp;17:10:46&nbsp;<br />TDI层不记得...<br /><!--StartFragment -->


<div>湖南-VC(215735031)&nbsp;&nbsp;17:11:19<br />贝贝，Kner.dll不是映射800地址，那是哪<br />南昌-贝贝(1125591)&nbsp;&nbsp;17:11:29<br />你是说800?<br />湖南-VC(215735031)&nbsp;&nbsp;17:11:35<br />XP是7c8以上<br />南昌-贝贝(1125591)&nbsp;&nbsp;17:11:49<br />我以为你是说&nbsp;0x80000000<br />湖南-VC(215735031)&nbsp;&nbsp;17:11:52<br />我也说的大概，大概那个段<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:12:01<br />好<br /><br />今天的会议我已经做了记录<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:12:07<br />并且发布到网络上了<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:12:09<br />元谋人啊&nbsp;TDI是什么的缩写啊？<br />湖南-VC(215735031)&nbsp;&nbsp;17:12:14<br />那刚这个进程间的映射话，一般会映射到哪个段<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:12:14<br />大家出名了以后不要意外<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:12:19<br />贝贝&nbsp;TDI是什么的缩写啊<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:12:21<br />可耻的准备下班了<br />湖南-VC(215735031)&nbsp;&nbsp;17:12:27<br />.data&nbsp;?<br />成都-祁愿(130048)&nbsp;&nbsp;17:12:45<br />Trandport&nbsp;Driver&nbsp;Interface<br />南昌-贝贝(1125591)&nbsp;&nbsp;17:12:50<br />Transport&nbsp;Driver<br />南昌-贝贝(1125591)&nbsp;&nbsp;17:12:54<br />Interface<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:13:06<br />传输层<br />南昌-贝贝(1125591)&nbsp;&nbsp;17:13:10<br />网络传输层接口<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:13:14<br />哦<br />南昌-贝贝(1125591)&nbsp;&nbsp;17:13:56<br />Vista以后不建议关注它.本来是要取消它的.后来为兼容性没取消<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:14:10<br />传输层还是要的吧<br /><br />啥？<br />映射还是&nbsp;copydata<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:14:14<br />以后搞驱动不行啦<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:14:26<br />麻痹的&nbsp;还得改成调试模式才能加载<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:14:36<br />要不就得签名<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:14:41<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/E9BIPM$_`9}`VS07`VD9H1F.gif" sysface="5" /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:15:20<br />物理&nbsp;链路&nbsp;网络&nbsp;传输&nbsp;会话&nbsp;应用<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:15:25<br />还差个神马？<br />南昌-贝贝(1125591)&nbsp;&nbsp;17:15:38<br />Vista&nbsp;以后的操作系统微软提供了&nbsp;NDIS&nbsp;Filter&nbsp;接口.嘿嘿.过滤就方便了<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:15:38<br />表示<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:15:44<br /><img alt="" src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/X@8}U9MLE}EBUE273)]9PGF.gif" sysface="13" /><br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:15:57<br />物理&nbsp;链路&nbsp;网络&nbsp;传输&nbsp;会话&nbsp;表示&nbsp;应用<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:16:01<br />嗯&nbsp;这样就对了<br />吉林-小伙&nbsp;(694129464)&nbsp;&nbsp;17:16:16<br />恩<br />湖南-VC(215735031)&nbsp;&nbsp;17:16:18<br />大哥&nbsp;你搞科研啊<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:16:24<br />这个东西还是有用的<br />南昌-贝贝(1125591)&nbsp;&nbsp;17:16:32<br />嘿嘿.这几个词,我面试别人的时候,还考别人呢...<br />&nbsp;&nbsp;&nbsp;(其实自己也答不来)<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:16:31<br />比如&nbsp;本地回环<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:16:42<br />只有端口号其作用<br />湖南-VC(215735031)&nbsp;&nbsp;17:16:54<br />貌似现在WINDOWS通用SOCKET编程简化了好几层<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:16:57<br />端口号&nbsp;主要是在应用层<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:17:11<br />ip地址是网络和传输层<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:17:21<br />学通了，还是有用的<br />武汉-不语(86990476)&nbsp;&nbsp;17:17:22<br />有很多人就死在这个问题尚<br />武汉-不语(86990476)&nbsp;&nbsp;17:17:24<br />上<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;17:17:24<br />不是完全没用 <br />吉林-小伙 (694129464)&nbsp; 17:24:49<br />就没有我的 哈哈<br />吉林-小伙 (694129464)&nbsp; 17:24:58<br />我的是问号 太NB了</div></div></div><img src ="http://www.cppblog.com/Error/aggbug/161674.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2011-12-07 17:11 <a href="http://www.cppblog.com/Error/articles/161674.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CreateProcess 传递command的 坑</title><link>http://www.cppblog.com/Error/articles/161481.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Mon, 05 Dec 2011 02:24:00 GMT</pubDate><guid>http://www.cppblog.com/Error/articles/161481.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/161481.html</wfw:comment><comments>http://www.cppblog.com/Error/articles/161481.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/161481.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/161481.html</trackback:ping><description><![CDATA[<!--StartFragment -->

<div>武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;10:19:49<br />CreateProcess&nbsp;怎么给&nbsp;进程传递&nbsp;command<br />哈尔滨-猫猫&lt;wengemima@qq.com&gt;&nbsp;&nbsp;10:20:12<br />不知道<br />中山-疯子(510776002)&nbsp;&nbsp;10:20:37<br />直接带上命令就行<br />哈尔滨-猫猫&lt;wengemima@qq.com&gt;&nbsp;&nbsp;10:20:44<br />WinExec可以直接在路径里写命令行参数<br />南昌-贝贝(1125591)&nbsp;&nbsp;10:21:03<br />参数二&nbsp;直接填开始运行里面填的东西<br />南昌-贝贝(1125591)&nbsp;&nbsp;10:21:06<br />就是命令行<br />南昌-贝贝(1125591)&nbsp;&nbsp;10:21:12<br />参数一不要使用<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;10:21:15<br /><img src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/D}5RZEM4MU~ZS1Q]N0]4RFB.gif"  alt="" />&nbsp;是滴<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;10:21:24<br />我就被参数一坑了<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;10:21:28<br />所以来分享下<br />南昌-贝贝(1125591)&nbsp;&nbsp;10:21:33<br />而且参数二要使用&nbsp;LPTSTR&nbsp;,,&nbsp;&nbsp;CONST&nbsp;会崩溃<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;10:21:43<br />还是贝贝厉害，走过很多坑<br />南昌-贝贝(1125591)&nbsp;&nbsp;10:21:54<br />天天撞坑的啦<br />哈尔滨-猫猫&lt;wengemima@qq.com&gt;&nbsp;&nbsp;10:21:57<br />只是人家没掉进去<br />南昌-贝贝(1125591)&nbsp;&nbsp;10:22:03<br />掉了好几次<br />南昌-贝贝(1125591)&nbsp;&nbsp;10:22:08<br />又爬出来了<br />深圳-雪锋(632006142)&nbsp;&nbsp;10:22:36<br />坑多了,自然就不怕坑了...变成坑人...<br />武汉-Error&lt;errorcpp@qq.com&gt;&nbsp;&nbsp;10:22:42<br />是滴，，，<br />深圳-雪锋(632006142)&nbsp;&nbsp;10:22:43<br /><img src="file:///D:/QQ2010/Users/85126585/Image/7(MHYNP@7U%JY`Y}{5MES~K.gif"  alt="" /><br />南昌-贝贝(1125591)&nbsp;&nbsp;10:22:45<br /><img src="file:///C:/DOCUME~1/LIANGC~1.WUH/LOCALS~1/Temp/)QN1UH78VKP2T7)IA]ZM(FW.gif" sysface="97"  alt="" /> </div><img src ="http://www.cppblog.com/Error/aggbug/161481.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2011-12-05 10:24 <a href="http://www.cppblog.com/Error/articles/161481.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>