c - 多线程 C/C++ 变量无缓存 (Linux)

标签 c linux multithreading synchronization

我使用 2 个 pthreads,其中一个线程“通知”另一个线程一个事件,为此有一个变量(普通整数),由第二个线程设置。

这行得通,但我的问题是,是否有可能第一个(读取)线程没有立即看到更新,这意味着缓存没有直接更新?如果是这样,有没有办法防止这种行为,例如像 java 中的 volatile 关键字?

(事件发生的频率大约在微秒范围内,因此或多或少需要强制立即更新)。

/edit:第二个问题:是否可以强制将变量保存在线程 1 所在的核心缓存中,因为这个线程一直在读取它。 ?

最佳答案

在我看来,您似乎应该使用 pthread 条件变量作为信号机制。这会处理您描述的所有问题。

关于c - 多线程 C/C++ 变量无缓存 (Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7165874/

相关文章:

c - MPI 矩阵乘法,进程未清理

c -/usr/bin/xfce4-terminal 的执行给出 "Session manager variable not defined"

linux - 我应该使用 netcat 在端口 25 上查看电子邮件吗?

Java 多线程对象

java - 如何区分等待(长时间超时)退出通知或超时?

java - 在 intellij : how can i see the all thrown exceptions? 中调试多线程

c - 与 Bison 的斗争

c - 验证电子邮件域的更好方法?

linux - 如何像 QueryPerformanceCounter 那样计算 cpu 周期

c - epoll 立即返回标准输入