posts - 13,  comments - 11,  trackbacks - 0
    今天周六,孤家寡人,无所事事,正好拿出刚从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 冰风谷 阅读(713) 评论(3)  编辑 收藏 引用 所属分类: 冰风手记

FeedBack:
# re: 天南地北一日游:临时站--spin lock
2008-01-08 16:38 | <a href=http://minidx.com>minidxer</a>
汗……被你的标题“骗”近来了,呵呵  回复  更多评论
  
# re: 天南地北一日游:临时站--spin lock
2008-01-12 21:17 | 冰风谷
哈哈
坐飞机就可以天南地北一日游了
要么,神游得了  回复  更多评论
  
# re: 天南地北一日游:临时站--spin lock
2009-09-29 11:02 | mybestcool
临界区就是spin lock。CAS2windows用interlocked...可以实现的。。linux实现比较麻烦,找了很多都没有找到我现在的机器上能用地  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2008年1月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用链接

留言簿(2)

随笔分类

随笔档案

文章分类

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜