cost 105 ms
在不写入的情况下在原子 object 上建立发布原子排序 - Establish a release atomic ordering on an atomic object without writing into it

我正在使用 Rust,但 Rust 实现了 C++ 原子 memory model,所以我将在 C++ 中提出我的问题。 我有一个原子 object M 。 我想在M上发出一个伪加载/存储操作,以便此操作将“读取”的存储发生在该操作之前,而所有将从该存储“读取”的加载都将在此操作之后发生。 基本上, ...

围绕标志和 ISR 使用正确使用 C++ 原子 - Correct usage of C++ atomics around flag & ISR usage

我有一个案例,我需要确保 ISR 在嵌入式系统(基于 ARM Cortex-M4)中卸载时无法与库交互。 该库可以随时加载或卸载,也可以随时触发中断/ISR。 这些库加载/卸载/处理 ISR 调用包含在项目特定例程中,因此我可以完全控制在边界执行的内容。 为此,防止这种情况的自然方法似乎是添加“已加 ...

在 Python 中:如何在不中断的情况下运行代码原子? - In Python: How to run code atomic with out interruption?

我已经看到关于同步问题的讨论:How to prevent two threads entering the same section of code? 他们引入了某种同步装饰器,例如 Java。 但这不是我的问题。 我想一次运行几行代码。 Python 解释器不应切换到这些代码行之间的另一个线 ...

在更新 object 期间,AWS S3 会拒绝读取吗? - Will AWS S3 reject a read during an object being updated?

我读过 S3 文档, PUT是原子的,从某种意义上说,永远不会对 object 进行部分写入。我天真的直觉是,可能有一些底层锁定机制可以确保原子性。 这是否意味着在更新 object 期间,使用相同密钥读取 object 将被拒绝? (我搜索了 S3 文档,但没有找到好的答案) ...

原子递增并分配给另一个原子 - Atomically increment and assign to another atomic

假设我有一些全局的: 和许多线程,每个线程都可以访问 可以在线程之间共享。 我想以连续的方式将空闲块分配给子偏移量,也就是说,我想原子地执行以下操作: 显然上面的实现是行不通的,因为多个线程可能会进入 if 语句的主体,然后尝试将不同的块分配给child_offset 。 我还考虑了以下内容: 但这 ...

不同的原子操作(例如__sync_fetch_and_add 和__sync_lock_test_and_set)是否互斥? - Are different atomic operations(e.g. __sync_fetch_and_add and __sync_lock_test_and_set) mutually exclusive?

我正在学习硬件支持的原子操作。 我知道有很多原子操作,例如比较和交换(CAS)、获取和添加(FAA)、测试和设置。 我知道当我们在多线程程序的共享资源上只使用一个原子操作时,不同的线程可以互斥地访问共享资源。 例如下面的例子: // this code implements a spinlo ...

以下为可重入锁编写的代码是否容易受到陈旧数据错误的影响并为多个线程提供锁? - Could the following code written for a Reentrant Lock be susceptible to a stale data error and provide locks to multiple threads?

我最近在学习无锁并发中的可重入锁时遇到了以下代码: 但是,似乎过时数据有可能导致多个线程获取锁,尤其是在线程争用很高的情况下。 如果来自不同内核的两个竞争线程试图同时调用 compare_exchange_weak,那么在两个线程获得锁之前,CPU 的缓存一致性协议是否有可能无法使 L1 缓存失效 ...

C++中的release fence调用go究竟是什么时候从声明变成保证? - When exactly does a release fence call in C++ call go from being a statement to being a guarantee?

根据 Jeff Preshing 博客中的一篇文章: 释放栅栏可防止 memory 对按程序顺序在其之前的任何读取或写入与按程序顺序在其之后的任何写入进行重新排序。 他还有一篇很棒的帖子,在这里解释了发布围栏和发布操作之间的区别。 尽管这些博客文章中有明确的解释,但我仍然对如何解释释放栅栏调用感到 ...

atomicAdd 半精度浮点 (FP16) on CUDA 计算能力 5.2 - atomicAdd half-precision floating-point (FP16) on CUDA Compute Capability 5.2

我正在尝试以原子方式将float值添加到__half 5.2 中的 __half。 该架构确实支持__half数据类型及其转换函数,但它不包括任何算术和原子操作,如atomicAdd() 。 我创建了以下atomicAdd() function 包装器,其中包含不支持半精度算术的特殊情况。 完整示 ...

R:如何将原子向量更改为递归? - R: How to change atomic vector to recursive?

我一直在尝试使用 $ function 从数据框列表中提取特定列,但总是得到相同的错误。 作为参考,这是我用来读取数据并将其汇总到列表中的代码: 到目前为止,这么好,这里没有问题。 但是当我尝试从每个数据框中删除某一列中具有负值的行时,我得到了错误。 这是删除我的行的循环: 现在这不起作用,我得到 ...

C++:在高位具有 16 位计数器的原子标记指针,似乎无法递增计数器 - C++: Atomic Tagged pointer with 16-bit counter in upper bits, can't seem to increment the counter

为了学习,我正在尝试实现一个原子标记/打包指针。 我想将高 16 位用于uint16_t计数器,将低 3 位用于 3 位标签。 到目前为止,除了增加计数器的能力外,我已经设法让所有的东西都工作了。 我对按位运算不是很熟悉,所以我认为错误可能出在我使用它们的某个地方。 我的实现如下: (神栓链接: ...

什么时候可以将原子读-修改-写操作分解为组成松散操作+障碍? - When is ok to break up atomic Read-Modify-Write operations into constituent relaxed operations + barrier?

在CL-Deque 的模型检查实现中,他们使用以下策略来递减bottom指针: 所以他们加载bottom指针,在本地递减它,然后存储它。 为什么这样做是有效的? 并发小偷难道不能看到其中一个bottom值吗? 执行此操作的另一种方法是将读取-修改-写入操作组合到单个atomic_fetch_sub ...

`int` 是原子类型吗? - is `int` an atomic type?

引用gnu : 实际上,您可以假设 int 是原子的。 您还可以假设指针类型是原子的; 那很方便。 这两个假设在 GNU C 库支持的所有机器和我们所知的所有 POSIX 系统上都是正确的。 这怎么可能? 我见过的所有与锁相关的示例都是使用 int 计数器创建的,例如https://www.del ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM