我在执行一些关键速度多线程代码。如果我确实知道某些基本的写入操作是原子性的,我可以避免出现一些关键部分。我刚刚阅读了一篇学术论文,其中我看到以下内容:运行时间检测 - 原子操作
“基本类型大小为t,int,float和pointer的写入必须是原子的。一个线程的写入必须由其他线程以相同的顺序看到。用于大多数现代标准计算机的IA-32和Intel-64 CPU架构保证了这些假设。“
我想这样做是为了能够在运行时的处理器是否是一种类型,这些操作都是原子的检测。 - 我想这也适用于AMD处理器。
我在执行一些关键速度多线程代码。如果我确实知道某些基本的写入操作是原子性的,我可以避免出现一些关键部分。我刚刚阅读了一篇学术论文,其中我看到以下内容:运行时间检测 - 原子操作
“基本类型大小为t,int,float和pointer的写入必须是原子的。一个线程的写入必须由其他线程以相同的顺序看到。用于大多数现代标准计算机的IA-32和Intel-64 CPU架构保证了这些假设。“
我想这样做是为了能够在运行时的处理器是否是一种类型,这些操作都是原子的检测。 - 我想这也适用于AMD处理器。
这听起来是多余的。 .EXE可能只是int main() { return true; }
。无论它运行,而答案是正确的,或者操作系统无法运行.EXE在所有的因为...处理器类型不匹配.EXE类型。
我知道这是题外话,但如果你打算写锁免费代码,您应该definatly由Herb萨特从文章阅读第一Lock-Free Code: A False Sense of Security
报价:
无锁码具有两大缺陷 的缺点。首先,它不是广义的 用于解决典型的 问题 - 很多基本数据结构,甚至双向链表, 仍然没有已知的无锁 实现。提出一个新的 或改进的无锁数据结构 仍然会赚你在一个审过的杂志, 有时学位至少 发表的论文。
AMD处理器支持IA32 CPU架构,并且它们限定从中Intel64位来源的AMD64构建筑系统。 – MSalters 2009-10-23 10:20:25
有趣。想知道什么是论文,以及在编译器优化时如何保证。如果你正在谈论组装好,我相信。否则,我发现很难吞下。 – 2009-10-23 18:54:54
这里的纸: www.cs.ualberta.ca/~mmueller/ps/enzenberger-mueller-acg12.pdf 我不知道你所说的“你想怎么在编译器的优化存在出示担保”的意思。谁说我想要? – Mick 2009-10-27 10:13:27