问题标签 [atomic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assembly - 80x86 上的原子位域操作?
80x86 是否有原子测试和设置单词的各个位的指令?
language-agnostic - 原子指令
原子指令是什么意思?
以下如何成为原子的?
测试和设置
从软件的角度来看,如果不想使用非阻塞同步原语,如何保证指令的原子性?是否只能在硬件或某些汇编级指令优化中使用?
sql - 在不违反约束的情况下交换两个数据库行
我有一张桌子regionkey
:
数据库的整个其余部分都外键为 areaid。在此表中, (region, locale) 上有一个具有唯一约束的索引。
问题是我有两条记录:
我需要在它们之间交换 (region,locale) 字段,这样我就可以得到:
天真的方法行不通,因为它违反了区域和语言环境的唯一索引:
我怎样才能做到这一点?有没有一种原子方式来进行交换?建议?
java - 原始类型的易失性或同步?
在 Java 中,如果变量的大小小于或等于 32 位,则赋值是原子的,但如果大于 32 位则不是。
在双重或长期分配的情况下,使用什么(易失性/同步)更有效?
像,
同步不适用于原始参数。在这种情况下如何使用同步?当然我不想锁定我的班级,所以this
不应该使用。
c - 在 C 中是 "i+=1;" 原子?
在 C 中,是i+=1;
原子的吗?
atomic - Berkeley DB 使用的原子性如何?
我正在编写一个简单的应用程序,其中包含 24 个项目的哈希值,以便在程序执行中保持不变,因此 Berkeley DB (DBM) 应该非常适合这项任务。
这只是为了好玩。
但我想知道是否使用它(与 Ruby 一起使用),然后当用户按下 CTRL-C 时,执行就会停止。这种情况下,是不是数据都乱了?
例如,如果 DB 中的值为 63,我将其加 1(变为 64)
那么,当“最重要的”1 被写入但 0 还没有被写入时,CTRL-C 是否会发生?在这种情况下,DB 中的值将是 127 而不是 63 或 64。如果不是 Ruby 而是 C 语言,并且用户使用“关闭窗口”或“杀死”来终止进程怎么办?想一想,硬盘驱动器可能一次将这个字节(或4字节)全部写入硬盘表面,所以这种情况不应该发生。
如果 CTRL-C 不会导致这种情况发生,那么停电或我踢电源插头可能会导致这种情况发生?例如,当值第一次缓存在 RAM 中,当它被写入硬盘时,我踢了电源插头,硬盘驱动器在写入 0 之前就断电了。我知道百万分之一,这不会发生,但这只是好奇的问题。
另一方面,如果我的脚本是
- 减少硬币价值
- 在他的库存中给用户一个“汉堡包”
然后当用户按下 CTRL-C 时,它恰好发生在上面的 (1) 和 (2) 之间,那么用户将拥有更少的硬币,并且不会得到汉堡包。
为了防止这一切发生,那就是使用SleepyCat、SQLite或MySQL的事务方法,这些都不会发生?
c# - C#如何保护原子类的字段?
我正在尝试在 C# 中创建一个 AtomicReference 类,并且我想保护字段引用,但我还需要在 get 方法中返回值:
解决这个问题有点笨拙……我不能将字段设为只读,因为我需要能够设置它。有比我更好的解决方案吗?
更新:感谢您的快速回复!正确地指出,如果我简单地返回 _value,引用将受到保护。我还想保护 _value 免受变异。如果我允许 _value 在 AtomicReference 之外发生变异,那么它就违背了制作这个类的全部目的......有没有办法实现这一点?
java - java线程安全代码+原子方法问题
我有一个将被多个线程同时访问的类管理器,我想知道我这样做是否正确?
我也认为我需要 RemoveFoo 是原子的,但我不确定
c# - 如何在 C# 中进行原子写入/追加,或者如何使用 FILE_APPEND_DATA 标志打开文件?
在大多数符合 Unix 和 Posix 的操作系统下,使用 O_APPEND 执行 open() 操作系统调用向操作系统指示写入是原子追加和写入操作。通过这种行为,对于本地文件系统,当您进行写入时,您知道它会附加到文件的末尾。
Windows 操作系统通过FILE_APPEND_DATA
将适当的参数传递给 Win32 CreateFile() 系统调用来支持相同的功能。
参考:
我的问题是,我无法确定如何使用 Net Framework 库在 C# 下获得这种行为,有没有办法使用 Net Framework 获得这种行为?顺便说一句,我不相信使用 FileMode.Append 会产生这种行为。