2

我了解到TSAN 不理解std::atomic_thread_fence,要修复它,您需要告诉 TSAN 哪些原子变量受围栏影响,通过放置__tsan_acquire(void *)__tsan_release(void *)旁边(分别用于获取和释放围栏)。

但是 seq-cst 栅栏呢?据我了解,它们比 acq-rel 围栏更严格,所以 acq-rel 注释可能还不够?

我对不同的内存顺序不太熟悉,所以我可能会遗漏一些东西。

4

1 回答 1

0

Github 上的@dvyukov确认__tsan_acquire+__tsan_release工具(与 acq-rel 围栏相同)应该足够了。

我不确定这是否意味着 TSAN 通常不区分 seq-cst 和 acq-rel 操作。

于 2022-01-04T10:04:34.517 回答