问题标签 [data-race]

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.

0 投票
1 回答
30 浏览

go - 为什么我会出现死锁以及如何修复它(同步)?

在某处陷入僵局。是什么原因造成的,应该如何解决?试图创造一个分子创造。函数 Make 将输入作为字符串:

函数应返回创建的分子数。分子应该有 1 个 O 分子和 2 个 H 分子。在创建所有分子之前不应完成生产功能。

0 投票
1 回答
54 浏览

atomic - ARMV8 中的数据竞争是否安全?

众所周知,在 INTEL X86 架构中访问对齐的基本数据类型是原子的。ARMV8怎么样?我尝试从Arm Architecture Reference Manual Armv8中得到结果,对于A-profile架构,我确实找到了一些与原子性有关的东西。ARMV8 是其他多拷贝原子的。它承诺多线程访问同一个 LOCATION 是原子的。但它说 LOCATION 是一个字节。我想知道如果线程 1 在没有锁定的情况下写入对齐的 uint64_t 内存,而线程 2 同时在没有锁定的情况下读取或写入它。它是原子的吗?(uint64_t 是 8 个字节,但 LOCATION 只有一个字节)

0 投票
0 回答
17 浏览

sprite-kit - SpriteKit - 我如何保持游戏统计线程安全?

SpriteKit我正在开发的游戏中,我从Thread Sanitizer.

一些精灵的一些属性以及GameScene通过玩家交互异步更新的属性,例如玩家的速度。

当然,这些值将被代码的其他部分读取,例如在场景的 .update 方法中。

对于一些更经常调用的属性,我编写了一个 getter/setter 方法来同步对数据的访问,如下所示:

但是我想知道我是否必须对代码中的每个值都这样做——它看起来很笨拙,而且我还没有遇到任何需要如此大量同步工作的示例或教程代码。

我的问题:

是否有以线程安全的方式处理游戏统计数据的最佳实践?甚至可能是我不知道的 SpriteKit API 中的一个功能?

0 投票
1 回答
110 浏览

multithreading - 使用 OpenMP 的多线程 Nagel–Schreckenberg 模型(交通模拟)

我正在尝试用 c 语言编写多线程 Nagel–Schreckenberg 模型模拟,当线程访问尚未计算的数据时遇到一些问题。

这是一个仅并行化每行速度计算的工作代码:

工作代码

这工作正常,但速度不够快。我正在尝试使用卷积来提高性能,但由于尚未计算,它有一半的时间无法读取相邻线程的数据。这是我使用的代码:

问题

正如你所看到的,当第二个块被计算出来时,第一个块可能还没有计算出来,它产生了那个空白空间。

我认为可以通过卷积来解决这个问题,但我只是做错了,我不确定是什么。如果您能就如何解决此问题提供任何建议,我将不胜感激。

0 投票
0 回答
47 浏览

multithreading - Rust 是否使用多线程自动执行代码

我正在阅读Rust 的所有权,结果证明 Rust 的所有权、引用和借用功能专注于通过引用可变性的一些限制来防止数据竞争。

我想知道为什么 Rust 强迫我们遵守这些限制?Rust 会在多线程模式下自动执行我的代码,这是真的吗?否则,即使我的代码默认只在单线程模式下执行,我为什么还要关心这些限制呢?

0 投票
1 回答
30 浏览

python - 数据竞赛和异步 python

试图了解 asyncio 是如何工作的。任务:必须添加一些代码来降低伪代码,以便请求必须是连续的(0、1、2...9),我需要排除数据竞争。我尝试添加循环(asyncio.get_event_loop() 和 run_until_complete()),但只得到“RuntimeError:此事件循环已在运行”。为了了解它的工作原理,我应该朝哪个方向移动?谢谢!

0 投票
1 回答
46 浏览

c++ - 为什么 sanitizer 在我的代码中并行处理异步 boost::asio 操作时会发出警告?

我决定测试我使用 boost::asio 编写的项目(我在不同的线程中运行 io_service::run )和各种消毒剂,并且在线程消毒剂上有数据竞争,即它报告说同时检查了套接字is_open 在 io_service 内的某个地方,同时由于超时而关闭。我设法在小代码上重复了这个问题,但我不明白它为什么会发生,它不应该使用 boost::asio::io_service::strand 构建一个链并同步 D 类的单个对象(来自示例下面)相对于其他线程?请帮忙,谢谢!

消毒剂输出: 来自截止日期的 is_open