接上次博客:http://blog.csdn.net/pennyliang/archive/2010/11/07/5993138.aspx
gangban_lau发表于Tue Nov 09 2010 19:07:08 GMT+0800 (China Standard Time)举报回复删除
回复 pennyliang: 我的意思 是 size_t u = g_uCount 这个赋值操作本身可能出现问题。只有这个操作是原子的,才能确保取到当前值。按照 libc 说明,int access 可以看成原子的。不过改成 libc 的 sig_atomic_t 应该更说明问题,否则后续的 CAS 实际是没有意思的。
li258227345发表于Wed Nov 10 2010 11:41:38 GMT+0800 (China Standard Time)举报回复删除
回复 gangban_lau:楼上的说得对,这里有问题哦.经不起推敲
网友回复关于size_t u=g_uCount这个必须是原子操作才可以保证正确性,这里做一个答复。
首先注意我对g_uCount的变量定义加了volatile,告诉编译器不要将这个变量优化进寄存器,也就是在多核情况下,每个核上的线程在从g_uCount取值时都是从内存中取的,也就是会锁总线,这显然是一个原子操作。在扯远一点从内存地址取值怎么就相当于锁总线呢?因为我们目前都是SMP架构,多个核共享一个内存,对称多处理的架构,核多个,L1Cache多个,但内存是一个,在同一时刻只有一个核可以从内存中取出来数据。
如果大家觉得不是原子操作,经不起推敲,可以举个例子来说服我,只一句经不起推敲是否不太妥当?
其次,即便把volatile修饰去掉,结果也是正确的,这个确实很难解释,我目前的水平还达不到完全解释的能力,有兴趣的读者可以参见:http://www.newsmth.net/bbstcon.php?board=CSArch&gid=34641。我想做芯片或者做编译器的同学应该能知道原因。
最后,这里举得例子都是很简单的,比如我的试验机只有4个核,在这个例子中,4个线程是最好的,多了反而无益,但实践中,是很难避免有慢速的设备和慢速的操作,超过4个线程通常都是有益的,可以在分时操作系统时间片的作用下,获得更好的吞吐率。
我们可以举个例子,比如银行有4个服务员(看成4core Cpu),有一票人(看做多个线程)在请求服务,现在的策略是分时服务,在某个老人(看做是一个线程)在窗口办一张银行卡,需要填表,该服务员每一个周期回头来检查一下老人是否填好了,没填好就处理别人的请求。这样总的吞吐率比服务员死等老人填完表要好得多。
最后我还是特别期待看到在g_uCount被修饰为volatile,且size_t u=g_uCount 不是原子操作的可运行的程序来证明,期待这两位网友和其他能作出这个实验的朋友们发给我,我贴出来,让大家一起学习一下,共同把这个问题深入搞清楚,如果不是常见的计算机或者操作系统也没关系,至少大家多长个见识。
分享到:
相关推荐
星火考研系列是针对准备研究生入学考试(简称考研)的学生提供的一种学习资源,其中的“巧计速计”方法是针对英语单词记忆的一种技巧性、高效的学习方法。艾宾浩斯记忆曲线则是心理学家赫尔曼·艾宾浩斯提出的理论,...
【巧计英语7000单词】是一种创新的英语词汇学习方法,旨在通过800个有趣且富有挑战性的句子帮助学习者记忆7000个英语单词。这种方法强调趣味性和实用性,使得学习过程不再枯燥乏味。这些句子涵盖了广泛的词汇,包括...
个省级行政区的名称和位置巧计PPT教案.pptx
试听巧计10000单词,杨金明 往年的参考资料,仅共参考
标题“小学数学数学故事小女儿巧计救父”讲述了一个智慧与解决问题能力的故事,通过一个小学数学问题展示了逻辑思维在日常生活中如何应用。这个故事的核心是利用数学知识解决实际问题,特别是涉及到数量、交易和条件...
标题提到的“英语谚语巧计单词700词汇任你掌握”暗示了一种通过学习英语谚语来记忆单词的方法。这种方法利用了谚语的韵律感和故事性,使单词的记忆过程变得有趣且易于接受。例如,“Anthropologists have discovered...
速查巧计手册是一种便于携带和快速查找的工具书,它将大量的概念、公式、定理等信息进行分类整理,使得使用者能够迅速找到所需信息。在考研数学的复习过程中,这种手册可以大大提高复习效率,帮助考生在短时间内掌握...
初中语文文摘历史苏军巧计“忽悠”希特勒
个省级行政区的名称和位置巧计.pptx
个省级行政区的名称和位置巧计学习教案.pptx
7. **动词时态**:正确使用过去式、过去分词和现在完成时。例如,"In Grand Eight I took physics. In one test I get only 36 percent of the answers correct." 应为 "I got only 36 percent of the answers ...
自己复习托福 才知道但背单词有多艰难 无论是词根式还是其他方法 这是我见到的最好的方法了 共享给大家
考研英语词汇巧计。20天内记住考研词汇,拥有去的故事记住考研英语单词
7. 学习方法和记忆建议: 文件中提到,学习过程中可以尝试自己制作记忆过程,即根据自己的理解和记忆习惯,创造一套适合自己的记忆方法。这不仅有助于加深记忆,还能够提高学习的主动性和学习效率。同时,使用图形和...
31.下一个排列----巧计 32.(hard)最长有效括号----栈 33.搜索旋转排序数组----二分查找 34.在排序数组中查找元素的第一个和最后一个位置----二分查找 39.组合总和----回溯 42.(hard)接雨水----双指针或栈 46....
2. "7、考研数学阅卷人概念·公式·定理速查巧计手册(190页).pdf":这是一份为考研准备的速查手册,涵盖了阅卷人关注的概念、公式和定理,对于快速回顾和记忆关键知识点很有帮助。 3. "28、不定积分公式大全.pdf":...
《考研数学概念公式定理手册》是一本为准备参加研究生入学考试的学生提供的数学参考书籍。这本手册主要涵盖了数学中的基本概念、重要的公式和定理,是考研数学复习的重要资料。由于内容都是通过OCR扫描获得,可能...
二、设巧计迁都洛阳 1. 原因: - 政治:加强对中原地区的统治,平城(今山西大同)的地理位置不利于统治全局,保守势力阻碍改革。 - 经济:平城地处边远,粮食供应困难。 - 军事:与北方游牧民族临近,存在安全...
5. 错误的说法是C项,阎典史并未使用巧计,而是通过号召民众并提供武器,成功组织防御。 这份同步练习涵盖了语文学习中的基础知识、文言实词虚词的理解、文言句式分析以及文学常识等内容,旨在通过练习加深学生对...
2. **设巧计迁都洛阳** - **迁都原因**:平城作为旧都,不利于改革的推进,保守势力强大,且地理位置不利于经济发展和军事防御,而洛阳作为中原的中心,更适合国家长远发展。 - **迁都过程**:孝文帝以南伐为借口...