我使用 2 个 pthreads,其中一个线程“通知”另一个线程一个事件,为此有一个变量(普通整数),由第二个线程设置。
这行得通,但我的问题是,是否有可能第一个(读取)线程没有立即看到更新,这意味着缓存没有直接更新?如果是这样,有没有办法防止这种行为,例如像 java 中的 volatile 关键字?
(事件发生的频率大约在微秒范围内,因此或多或少需要强制立即更新)。
/edit:第二个问题:是否可以强制将变量保存在线程 1 所在的核心缓存中,因为这个线程一直在读取它。 ?
最佳答案
在我看来,您似乎应该使用 pthread 条件变量作为信号机制。这会处理您描述的所有问题。
关于c - 多线程 C/C++ 变量无缓存 (Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7165874/