草庐IT

non-volatile

全部标签

c# - 'volatile' 关键字在 C# 中是否仍然损坏?

JoeAlbahari有一个greatseries关于多线程,这是必读的内容,任何使用C#多线程的人都应该牢记这一点。但是在第4部分中他提到了volatile的问题:Noticethatapplyingvolatiledoesn’tpreventawritefollowedbyareadfrombeingswapped,andthiscancreatebrainteasers.JoeDuffyillustratestheproblemwellwiththefollowingexample:ifTest1andTest2runsimultaneouslyondifferentthread

C# 错误 : "An object reference is required for the non-static field, method, or property"

我有两个类,一个用于定义算法参数,另一个用于实现算法:1类(算法参数):usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceVM_Placement{publicstaticclassAlgorithmParameters{publicstaticintpop_size=100;publicstaticdoublecrossover_rate=0.7;publicstaticdoublemutation_rate=0.001;publicstaticintchrom

c# - 为什么不在 System.Double 和 System.Long 上使用 volatile?

像我这样的问题是asked,但我的有点不同。问题是,“为什么C#中的System.Double和System.Int64等类型不允许使用volatile关键字?”乍一看,我回答了我的同事,“嗯,在32位机器上,这些类型至少需要两次滴答才能进入处理器,而.Net框架有意抽象出特定于处理器的细节像那样。”他对此回应说:“如果它因为特定于处理器的问题而阻止您使用某项功能,那么它就不是抽象任何东西!”他暗示处理器特定的细节不应该显示给使用框架的人,该框架从程序员那里“抽象”了这样的细节。因此,框架(或C#)应该抽象出那些并做它需要做的事情来为System.Double等(无论是信号量、内存屏障

c# - 在 C# 中访问简单的 bool 标志时,是否需要锁定或标记为 volatile ?

假设您有一个在后台线程上运行的简单操作。您想要提供一种方法来取消此操作,因此您创建了一个bool标志,您从取消按钮的点击事件处理程序中将其设置为true。privatebool_cancelled;privatevoidCancelButton_Click(ObjectsenderClickEventArgse){_cancelled=true;}现在您正在从GUI线程设置取消标志,但您正在从后台线程读取它。在访问bool之前是否需要锁定?您是否需要这样做(并且显然也锁定了按钮单击事件处理程序):while(operationNotComplete){//Docomplexoperat

c# - MVC : The parameters dictionary contains a null entry for parameter 'k' of non-nullable type 'System.Int32'

我是MVC的新手。在我的应用程序中,我正在从Mydatabase中检索数据。但是当我运行我的应用程序时,它会显示这样的错误这是我的网址http://localhost:7317/Employee/DetailsData/4ExceptionDetails:System.ArgumentException:Theparametersdictionarycontainsanullentryforparameter'k'ofnon-nullabletype'System.Int32'formethod'System.Web.Mvc.ActionResultDetailsData(Int32)

c# - 为什么我会收到消息 "Invalid setup on a non-virtual (overridable in VB) member..."的异常?

我有一个单元测试,我必须模拟一个返回bool类型的非虚拟方法publicclassXmlCupboardAccess{publicboolIsDataEntityInXmlCupboard(stringdataId,outstringnameInCupboard,outstringrefTypeInCupboard,stringnameTemplate=null){returnIsDataEntityInXmlCupboard(_theDb,dataId,outnameInCupboard,outrefTypeInCupboard,nameTemplate);}}所以我有一个XmlCu

c# - 什么时候应该在 C# 中使用 volatile 关键字?

谁能很好地解释C#中的volatile关键字?它解决了哪些问题,没有解决哪些问题?在哪些情况下它会节省我使用锁定的时间? 最佳答案 我认为没有比EricLippert更好的人来回答这个问题了。(强调原文):InC#,"volatile"meansnotonly"makesurethatthecompilerandthejitterdonotperformanycodereorderingorregistercachingoptimizationsonthisvariable".Italsomeans"telltheprocessor

c# - volatile 与互锁与锁定

假设一个类有一个被多个线程访问的publicintcounter字段。此int仅递增或递减。要增加这个字段,应该使用哪种方法,为什么?lock(this.locker)this.counter++;,Interlocked.Increment(refthis.counter);,将counter的访问修饰符改为publicvolatile。既然我已经发现了volatile,我已经删除了许多lock语句和Interlocked的使用。但是有理由不这样做吗? 最佳答案 最差(实际上不会工作)Changetheaccessmodifier

javascript - 错误 : [$compile:nonassign] Expression 'undefined' used with directive 'myFacebook' is non-assignable

我正在用angularjs编写一个指令并得到上面提到的错误。我正在使用一本书中的代码。.directive('myFacebook',[function(){return{link:function(scope,element,attributes){(function(d){varjs,id='facebook-jssdk',ref=d.getElementsByTagName('script')[0];if(d.getElementById(id)){return;}js=d.createElement('script');js.id=id;js.async=true;js.src

转到 1.12 模块 : local import in non-local import

我目前正在使用Go1.12模块并且对导入感到厌烦。我正在使用gin(网络微服务)和gorm(golangorm)制作rest-api。在golang模块中工作时一切仍然正常。但是在导入本地包时遇到问题目录树:go.mod:modulegithub.com/Aragami1408/go-gormgo1.12require(github.com/gin-gonic/ginv1.4.0github.com/jinzhu/gormv1.9.9github.com/lib/pqv1.1.1github.com/satori/go.uuidv1.2.0)db.go:packagedb//codeb