【发布时间】:2018-11-05 01:27:39
【问题描述】:
我知道在 C 和 C++ 中存在 int128_t 类型。
如果我有两个线程,一个正在从包含这个 128 位整数的内存位置读取,另一个正在写入它。
这个值有可能被写为两次 64 位整数写入还是一次 128 位整数写入?
【问题讨论】:
-
不能保证在所有实现上都定义该类型,编译器如何生成程序集取决于编译器、平台和编译标志/选项。这个问题没有可移植的答案。
-
我不会担心的。使用适当的同步技术,你应该没问题。
-
不,你不知道这个,因为它在 C/C++ 中不存在。
-
如果您担心竞争条件(读者会在作者写作时阅读),那么您这样做是正确的。防止竞争条件的工具取决于语言和操作系统,但一些常见的工具是互斥锁、临界区和信号。当您想确保自己是唯一做某事的人时,互斥锁非常有用。
标签: c++ c thread-safety int128