volatile相关内容

将挥发性保护我免受一切的背后的幕后多线程的危害?

我曾经以为只有两个多线程危害: 的竞争条件的:一个线程读取 X ,在此之前它可以写回另一个线程写入 X 。 的不稳定状态的:一个线程写入 X 和是,但那些之间的两个写另一个线程读取 X 的新价值和是的旧值,即使这些变量应该共同改变。 我想,如果我能理这些事情是不可能发生的,我并不需要同步。但是从 ..
发布时间:2016-03-08 11:01:21 Java开发

Android的挥发不工作?

我有一个Activity类,其中我有一个静态的标志,让我们说 公共静态挥发标志= FALSE; 然后在上课,我启动一个线程,它检查标志,并做不同的事情。 我也有一个BroadcastReceiver,它将该标志设置为true或false。 我虽然波动将迫使该标志到最近的值。但我可以看到我的BroadcastReceiver设置静态标志为真,但我的线程仍然得到它为假。 我在这里丢失基本的东西 ..

挥发性VS VolatileRead /写?

我找不到的的VolatileRead /写(试行...),但仍任的例子: 在的我应该用挥发性 VS VolatileRead ? AFAIK的全部目的挥发性是创建的一半的围栏这样: 有关的 READ 的操作,读/写(在其他线程),它来自当前运行后,会不会栅栏前通过。所以 - 我们读到的最新值 问题1 那么,为什么我需要 volatileRead ?似乎挥发性已做的工作。 加 - 在C# ..
发布时间:2015-11-28 10:27:43 C#/.NET

很奇怪的和严重的多线程不一致问题C#

我有2个线程一个非常简单的监视程序。一个线程正在更新长可变的,其它线程读取的变量。并提醒,如果超过X秒的最后一次更新。的问题是,有时(发生每天一次更或更少)的第二线程读取变量的一个过时的值。 有时候是3秒前陈旧的值(即第一个线程更新的长期变量,但在3秒后另一个线程没有得到新的值) 我用的锁,以避免多线程缓存的问题。我也试过挥发,联锁,volatileRead等,但没有什么帮助。类是通过通过CO ..
发布时间:2015-11-27 11:47:23 C#/.NET

不同的线程访问的MemoryStream

有一点code这将数据写入到MemoryStream对象直接进入它的数据缓冲区通过调用的GetBuffer()。它还使用和更新中的地位和SetLength()性能适当。 这code正常工作99.9999%的时间。从字面上看。只有每个这么多的100000的重复就会BARF的。具体问题是,MemoryStream中的位置属性突然返回零,而不是适当的值。 不过,code的补充,为0检查并抛出一个异常 ..
发布时间:2015-11-27 10:52:43 C#/.NET

我需要这一领域的挥发?

我有一个线程旋转,直到被另一个线程改变一个int有一定的价值。 INT CUR = this.m_cur; 而(CUR> this.Max) { //旋转,直到CUR为< = MAX CUR = this.m_cur; } 难道this.m_cur需要申报挥发性这个工作?是否有可能,这将永远自旋,由于编译器优化? 解决方案 是的,这是一个硬性要求。刚刚在 ..
发布时间:2015-11-26 20:53:49 C#/.NET

为什么不是C#挥发性保护的读写重新排序?

根据本联机图书,在挥发性在C#中的关键字不能防止重排写操作之后读取操作。它给出了这样的例子,其中两个 A 和 B 可以最终被设置为 0 ,虽然 X 和是是挥发性: 类IfYouThinkYouUnderstandVolatile { 挥发性INT X,Y; 无效的Test1()//上执行一个线程 { X = 1; //挥发性写(释放栅栏) 诠释一个= Y; //挥发 ..
发布时间:2015-11-26 20:35:15 C#/.NET

C#中的挥发性数组项?

我需要的挥发性元素的数组,并不能找到一个方法来做到这一点。 私人挥发性T [] _​​arr; 这意味着该_arr参考是挥发性的,但它并不能保证有关_arr对象本身内部的物品的任何 有没有什么办法,以纪念_arr的项目为挥发性? 感谢。 编辑: 按二进制codeR的回答内置下面code。 这是code线程安全使用? 公共类VolatileArray< T&GT ..
发布时间:2015-11-26 10:40:09 C#/.NET

挥发性在.NET 4.0引用类型

我弄糊涂了对挥发性为引用类型。 据我了解,对于基本类型,挥发性可以立即反映在另一个线程值的变化。作参考的类型,它可以立即反映在地址更改。然而,关于所述对象的内容。他们是否仍缓存? (假设 List.Add()是一个原子操作) 例如,我有: A级 { 挥发性名单,其中,字符串>清单; 无效的AddValue() { list.Add(“值 ..
发布时间:2015-11-26 10:11:33 C#/.NET

如果一个锁变量声明为volatile?

我有以下锁的语句: 私人只读对象ownerLock_ =新的对象(); 锁定(ownerLock_) { } 我应该使用挥发性的关键字为我的锁变量? 私人只读挥发物ownerLock_ =新的对象(); 在MSDN我看到它一般用于指未锁定访问的领域,所以如果我用锁,我不需要使用volatile? 从 MSDN : 挥发性改性剂通常用于是受访问的场 多线程 ..
发布时间:2015-11-26 09:58:36 C#/.NET

难道一个的EventWaitHandle有任何隐含的MemoryBarrier?

新来这个网站,所以让我知道,如果我没有张贴在接受的方式。 我已经频频codeD沿着下面的示例的东西线(带的东西,如处置ommited的清晰度。)。是,需要我的问题的挥发物如?抑或是ManualResetEvent.Set有一个内隐记忆障碍,因为我读过Thread.Start呢?或将明确MemoryBarrier调用比挥发更好?或者是完全错误的?而且,事实上,在某些操作中“隐记忆障碍的行为”没有记 ..
发布时间:2015-11-26 00:21:35 C#/.NET

难道Monitor.Wait确保字段是重读?

人们普遍接受的(我相信!),一个锁定将迫使任何值从字段重新加载(基本上充当内存屏障或栅栏 - 我的术语在这方面变得有点松,我怕),其结果是只有那些领域的永远的一个锁定里面的访问,不应该自己必须挥发性。 (如果我错了已经,只是说!) 有一个很好的评价是或者更简单地说:的确领域需挥发性,以确保获得电流值后恢复时,等待()? 看着反射器,等待要求分解成 ObjWait ,这是管理​​interna ..
发布时间:2015-11-25 23:39:58 C#/.NET

为什么不挥发的System.Double和System.Long?

像我这样一个问题一直问的,但我是一个有点不同。现在的问题是,“为什么volatile关键字不在 C#允许在类型 System.Double 和 System.Int64 等?“ 在乍一看,我回答了我的同事,“好了,在32位机器上,这些类型至少需要两年蜱甚至进入处理器和.NET框架有抽象出处理器的具体细节的意图像那样。”对此他回应,“这不是抽象什么,如果它是$ P $使用,因为一个特定处理器的问题 ..
发布时间:2015-11-25 23:32:48 C#/.NET

C#挥发性双

由于只有引用类型和一些原语(包括浮动,但不会增加一倍,我不知道为什么,我很高兴地听到,为什么的原因)可以被声明为挥发,如果我换了双一类那么声明为挥发性(如下图),将双重属性进行“读写”线程安全的,因为任何其他挥发性,或者我应该还是在看锁? 公共类MyThreadedClass { 挥发性VolatileDouble voldub; } 公共类VolatileDouble { 公 ..
发布时间:2015-11-24 21:29:41 C#/.NET

挥发性违反其主要工作?

根据 MSDN : volatile关键字表示字段可能被修改 正在执行的同时多线程。字段是 声明为volatile不受编译器优化, 假定由单个线程访问。这确保了最 最多最新的值是在任何时候都实地present。 请注意最后一句: 这确保了最先进的最新值是在任何时候都present在外地。的 然而,有与此关键字的一个问题。 我已经 读 之能指令变更单: 第一指令第二指令对它们进行 ..
发布时间:2015-11-24 21:05:06 C#/.NET

挥发性围栏演示?

我试着去看看栅栏被应用。的 我有这个code(该块无限期): 静态无效的主要() { 布尔完成= FALSE; 变种T =新主题(()=> { 布尔切换= FALSE; 而切换=切换(完成!)!; }); t.Start(); Thread.sleep代码(1000); 完整=真; t.Join(); ..
发布时间:2015-11-24 16:30:03 C#/.NET