atomicity相关内容

在 x86-64 上,是“movnti"指令原子?

在 x86-64 CPU(Intel 或 AMD)上,将 4/8 字节写入 32/64 位对齐地址的“movnti"指令是原子的吗? 解决方案 是的,movnti 在自然对齐的地址上是原子的,就像所有其他自然对齐的 8/16/32/64b 在 x86 上存储(和加载)一样.这适用于任何内存类型(回写、写组合、不可缓存等).请参阅该链接以了解英特尔 x86 手册中的保证措辞. 请注意, ..
发布时间:2021-09-29 19:46:34 其他开发

什么是原子?

这是两个原子操作: int value = 5;Object obj = new Object(); 但是当使用原语作为方法参数时,这是否被视为原子操作:public void setValue(int val, Object obj){ this.value = val;//原子? this.obj = obj;//不是原子的? } ?对象引用的副本不是原子的,因为它包括读取和写 ..
发布时间:2021-09-05 20:41:55 Java开发

成功的 send() 是“原子的"吗?

成功调用 send() 并且返回的数量等于 size 参数中指定的数量是否保证不会发生“部分发送"? 或者有什么方法可以让操作系统在为系统调用提供服务时被中断,发送部分数据,等待可能很长时间,然后发送其余部分并返回而不用较小的返回值通知我? > 我不是在谈论内核缓冲区空间不足的情况;我意识到我会得到一个较小的返回值并且必须再试一次. 更新:根据目前的答案,我的问题可以改写如下: ..
发布时间:2021-09-04 19:53:32 其他开发

是“开关"吗?语句评估线程安全?

考虑以下示例代码: class MyClass{公共多头x;公共无效 DoWork(){开关 (x){案例 0xFF00000000L://做任何事...休息;案例 0xFFL://做任何事...休息;默认://通知出现问题抛出新的异常();}}} 忘记代码片段的无用性吧:我怀疑的是 switch 语句的行为. 假设 x 字段只能有两个值:0xFF00000000L 或 0xFFL.上面 ..
发布时间:2021-09-03 18:34:39 C#/.NET

Rethinkdb 原子操作

假设我有一个文档 {编号:1,水果: []} 这里的水果充当 SET 现在我想原子地为带有主键 = 1 的文档添加一个值到水果数组 OR 如果它不存在则创建这样的文档(即在下面使用 SetInsert ReQL引擎盖) 我也需要为 increment(ReQL .Add) 做同样的事情 显然这不能在客户端代码中完成,因为它破坏了原子性并且我最终得到了不一致的数据 我希望 ..
发布时间:2021-07-09 20:28:04 其他开发

python - 确保脚本只被激活一次

我正在编写 Python 2.7 脚本. 总之,这个脚本每晚都在 Linux 上运行并激活几个进程. 我想确保此脚本不会并行运行多次(基本上是在应用程序级别尝试模仿 Singleton 模式). 代码示例 def main():#在做任何事情之前,我想知道这是否# 脚本被激活并存活.# 如果是,报错# 做一点事如果 __name__ == "__main__":主要的() 建议 ..
发布时间:2021-06-26 19:30:06 Python

对网页进行实时更新时跟踪更改的方法

我希望在网页上实时更新订单(和状态)列表.(MySQL)数据库中的订单通过其他进程(PHP)异步更新. 我熟悉将数据推送到页面的机制(轮询、事件源).这不是关于那个. 我正在努力解决的是在没有 的情况下准确地为每个用户推送哪些数据 不必要地更新不需要的列表实体 不错过更新. 我的表确实有一个 DateTime 列 last_update_date,当订单有任何更改时,我会更 ..
发布时间:2021-06-05 18:50:06 PHP

原子比较,多处理器,C/C ++(Linux)

我在多处理器系统上的共享内存x中有一个变量. void MyFunction(volatile int * x){如果 (*x != 0) {//做一点事}} 其他进程(可能在不同的处理器上)将使用gcc内置的原子操作(例如__sync_bool_compare_and_swap等)写入x. 我认为我遇到了一些缓存并发问题,有时x最终用新值更新之前需要花费一些时间. 如果存在这 ..
发布时间:2021-05-29 22:48:54 服务器开发

计算catch块中发生的异常数

我试图在 ConcurrentHashMap 中收集所有发生的异常计数和异常名称,以便使我知道该异常发生了多少次. 所以在我的catch块中,我有一个映射,该映射将继续添加异常的名称,并且总计数出现. 下面是我的代码,出于测试目的,我已对其进行了修改,每次都始终抛出SQL异常,以便我可以看到异常计数是否正确. 某些情况下- 1)如果我将线程数选择为 10 ,将任务数选择为 ..
发布时间:2021-05-18 21:11:29 Java开发

蜂巢插入中途失败时会发生什么?

假定一个插入预期将在蜂巢中加载100条记录,并且已插入40条记录,并且由于某种原因插入失败.事务将完全回滚,并撤消插入的40条记录吗?或即使在插入查询失败后,我们也会在配置单元表中看到40条记录吗? 解决方案 该操作是原子操作(即使对于非ACID表也是如此):如果使用HiveQL插入或重写数据,则该操作会将数据写入临时位置,并且仅当命令成功将文件移动到表位置(如果 INSERT OVERW ..
发布时间:2021-05-14 19:04:47 其他开发

跨多个Web请求的MongoDB事务

我正在尝试使用Go通过HTTP实施 MongoDB 交易API服务客户端将请求发送到以下位置:/db/transaction/begin 获取交易ID为了将所有后续与交易相关的CRUD操作API请求与该交易ID绑定在一起最后,客户端要么向/db/transaction/{transaction_id}/commit 发送请求或/db/transaction/{transaction_id}/rol ..
发布时间:2021-05-11 20:03:00 其他开发

在一个原子操作中从InnoDB表中进行选择和截断的最佳方法是什么?

我想使用SELECT从InnoDB表读取,然后在一个操作中使用TRUNCATE截断它,以便其他查询必须等待TRUNCATE操作完成才能修改表.最好的方法是什么?据我了解,表锁不适用于TRUNCATE.但是从我的测试来看,事务 do 与TRUNCATE一起使用.但是,只有在隔离级别为SERIALIZABLE的情况下,才能保证事务不重叠. 我正在使用PHP和MySQLi.默认的隔离级别为REPE ..
发布时间:2021-04-23 20:40:14 PHP

C ++如果一个线程编写完成后会切换布尔值,那么在另一个线程中的循环中读取该布尔值是否安全?

我正在构建一个非常简单的程序作为练习. 这个想法是通过递归遍历目录的所有内容,然后对目录(及其子目录)中包含的所有文件的大小求和,来计算目录的总大小. 为向用户显示程序仍在工作,此计算在另一个线程上执行,而主线程每秒打印一个点.. 现在,主线程当然需要知道何时应该停止打印点并可以查找结果.可以使用例如 std :: atomicdone(false); 并将其传递给 ..
发布时间:2021-04-19 19:32:09 C/C++开发

无锁原子更新到不可变地图

给出Javaslang/Vavr 不变地图,以及更新该地图的函数: private Map myMap = HashMap.empty(); public void setBar(Foo foo, Bar bar) { myMap = myMap.put(foo, bar); } 如何确保两次同时调用不同的Foo键的setBar()都记录其更新? // t ..
发布时间:2020-11-27 04:24:21 Java开发

什么是“故障原子性"? J bloch使用了它,以及它在不可变对象方面有何好处?

恰好是immutable object 的好处,出现在下面的语句中 不可变对象始终具有“失败原子性"( 约书亚·布洛赫(Joshua Bloch): 如果一个不可变的对象抛出异常,它就永远不会消失 不良或不确定的状态. 任何人都可以更详细地解释它吗?为什么呢? 解决方案 Bloch的“失败原子性"表示,如果方法抛出异常,则该对象之后仍应可用.通常,对象应与调用该方法之前处于相 ..
发布时间:2020-11-27 04:14:33 Java开发

gcc原子读写

我有一个多线程应用程序,其中有一个生产者线程(主线程)和多个使用者. 现在,从主要方面来说,我想对消费者从事的工作有一定百分比的了解.实现一个计数器很容易,因为要完成一个循环.但是,由于此循环重复了数千次,甚至可能超过一百万次.我不想互斥这部分.因此,我研究了一些写入int的原子选择. 据我了解,我可以使用gcc内置的原子函数: https://gcc.gnu.org/onlinedo ..
发布时间:2020-11-12 23:21:52 其他开发

在Linux上创建原子文件?

我需要创建一个文件(如果该文件不存在),从而导致尝试创建该文件的另一个进程失败.即使在创建过程完成将实际数据写入文件之前,我仍需要将文件视为“已创建". 我阅读了有关open()的O_EXCL标志的信息,因此看来该解决方案存在,但是我有几个问题: 您对此技术有经验吗?有多好? (我想我不能拥有数据库级别的原子性,但是足够好了……很好,足够了) 我应该在open()之后立即关闭文件,以 ..
发布时间:2020-11-06 04:15:19 服务器开发