今天周六,孤家寡人,无所事事,正好拿出刚从china-pub上购买的书"深入解析ATL"第二版来看看...
以前一直对COM比较感兴趣,也囫囵吞枣的看了些关于COM的书籍,限于功力有限,也一直没从事COM方面的工作。时到今日,还是个“糊涂神”...由于现在的工作不再像以前那样处处受限于人,自由度比较大,很多时候自己可以拿主意了。所以在做模块化时,何不用COM来做做?
刚看了一点,看到线程套间的时候,还是如以前那么模糊,于是想google下,是否能查到哪位神人写了一篇神帖,让我一下豁然开朗。果然从www.vckbase.com上搜到了一篇"
理解 COM 套间"的帖子,作者
junguo。看了下简述,为作者曾经失去的一段感情感到惋惜,COM居然也能参入其中,真是不可小看,呵呵。
很赞同作者的话,你想学好一个东西,就必须先弄明白这个东西产生的背景和原因。其间,作者说到多线程,说到了汇编...于是我去看了下各寄存器的功能...说到了线程同步,发现作者在调用InitializeCriticalSection初始化CRITICAL_SECTION后没有释放,但我一时记不起释放的函数了,于是在msdn里搜下InitializeCriticalSection 这个API,就找到了DeleteCriticalSection,就它释放临界区了。一般创建资源和释放资源的API,在msdn里总是互相引用,成双成对的嘛。但我突然发现了初始化临界区的另一API:
InitializeCriticalSectionAndSpinCount,它是干嘛的?比InitializeCriticalSection来多了什么功能?在什么情况下不使用InitializeCriticalSection,而使用
InitializeCriticalSectionAndSpinCount?
看MSDN,虽然能看懂,但还是嫌慢了点,就又google了下,发现了这篇文章:http://yjl.spaces.live.com/blog/cns!8129C4219A8E995B!466.entry.突然间想起了上周末,我在看的Lock-Free, Wait-Free...想起有一个地方说实现spin lock的意义。当时也没在意,呵呵,现在一想起来,原来ms为我们实现了不少东东:CAS,可用InterlockedCompareExchangePointer来实现,就是CAS2没找到对应的实现,应该是一个64位的API,没仔细的去找。而现在又突然发现
spin lock可以用InitializeCriticalSectionAndSpinCount来代替,哈哈....
哎哎,游得太远点了,我回去了。不过先回“理解 COM 套间”这篇文章再说,还没看完呢。看完了再回书上...看腻了,就开始做做UDP直播的镜像吧,这回可是有一个月工资的奖金的...
posted on 2008-01-05 14:54
冰风谷 阅读(710)
评论(3) 编辑 收藏 引用 所属分类:
冰风手记