1
7
Microsoft Research CHESS应该被证明是测试您的实现的好工具。 |
2
4
|
3
3
考虑到我找不到Interlocated.Exchange读取或写入块的任何引用,我认为没有。我还想问,为什么你想去无锁,因为很少有足够的好处来应对它的复杂性。 微软在2009年GDC上做了一个很好的演示,你可以看到幻灯片 here |
4
2
注意双重检查-单锁模式(如上面引用的链接: http://www.yoda.arachsys.com/csharp/singleton.html ) Andrei Alexandrescu《现代C++设计》逐字引述
|
5
1
两个线程进入
我也没有运行过这段代码,所以我不确定我的假设在这段代码中是否可行,但它们是否可行(例如,输入cursor.Write时从多个线程执行)
|
6
1
node.data[]的新值已提交到此内存位置,这意味着什么?它不存储在易失性内存地址中,因此如果我理解正确,可以缓存它?这难道不可能导致“肮脏”阅读吗?也许还有其他地方也是如此,但这一个一目了然。 第二,包含以下内容的多线程代码:
... 这从来都不是好兆头。如果它是必需的,那么代码注定会失败,如果它不是必需的,那就是浪费。我真希望他们能完全删除这个API。要意识到这是一个至少要等待那么长时间的请求。由于上下文切换的开销,您几乎肯定要等待更长、更长的时间。 第三,我完全不理解联锁API在这里的用法。也许我累了,只是没抓住重点;但我无法在两个线程上都找到潜在的线程冲突&写入同一个变量?似乎我能找到的联锁交换的唯一用途是修改node.data[]的内容以修复上面的#1。 最后,执行似乎有些过于复杂。我是否遗漏了整个游标/节点的要点,或者它基本上是在做与这个类相同的事情(注意:我还没有尝试过,我也不认为这是线程安全的,只是试图把我认为你在做的事情归结起来。)
我必须承认一件事,我鄙视穿线。我见过最好的开发人员在这方面失败。这篇文章给出了一个很好的例子,说明正确使用线程有多么困难: http://www.yoda.arachsys.com/csharp/singleton.html |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
Dansih · .Net核心自定义身份验证方案 2 年前 |
lolorekkk · 面板插入。NET WinForm 2 年前 |