百科问答小站 logo
百科问答小站 font logo



C# 中的原子的基础数据类型能否用于同步多线程? 第1页

  

user avatar   ling-jian-94 网友的相关建议: 
      

要加volatile,不涉及到什么内存屏障那么复杂的问题,而是如果不加,编译器很可能假设你访问的这个变量不会被其他线程同时访问,于是不会重新加载,你实际上是在反复读取一个寄存器的值。加了volatile,编译器就在每次访问这个变量的时候强制去读取内存中的值。更低层的问题是跟虚拟机实现有关了,但是至少在x86/x64上这个程序工作没有问题。但是这么实现效率很低(不管是长时间的锁还是短时间的锁都是),请使用Event一类的同步对象。




  

相关话题

  有关c#多线程使用ReaderWriterLock代替lock的疑问? 
  如何评价.NET Core 1.0称使用.NET Core运行速度是Node.js的八倍,Go的三倍? 
  为什么汇编mov指令不能用lock前缀? 
  如何开始系统的学习一个开源框架? 
  c#中虽然异步和多线程是两码事,但是是否异步微软提供的async函数内部还是多线程去实现的? 
  多个 CPU 操作多线程对主内存中某一共享变量同时进行写入操作可以做到吗? 
  .net做的软件导出excel时,如果有两个版本的office,能否修改导出时调用的office版本? 
  c#中虽然异步和多线程是两码事,但是是否异步微软提供的async函数内部还是多线程去实现的? 
  如何编写能够监听特定程序或全系统所有Http请求的.Net程序? 
  如何看待 .NET Native,真能达到 C++ 的性能、C# 的生产效率吗? 

前一个讨论
培训机构作为编程的重新开始,是不是正确的选择?
下一个讨论
为什么电风扇只能选择一二三级风这种离散型的值,而不是从零到三连续型的?





© 2024-11-24 - tinynew.org. All Rights Reserved.
© 2024-11-24 - tinynew.org. 保留所有权利