c - WinAPI中如何让两个线程共享一个全局变量?

标签 c multithreading winapi

我有两个使用 CreateThread() 创建的线程,我有一个全局变量,一个线程写入该变量,另一个线程读取该全局变量。

现在根据我的理解,编译器和/或CPU可以进行各种优化,这可能意味着例如当我向变量写入值时,该值可以写入某些缓存中而不是直接写入到内存(因此其他线程将无法看到它)。

我读到我可以将访问变量的代码包装在关键部分中,但是 documentation说临界区只会强制互斥,并没有提及强制直接写入内存和直接从内存读取。

请注意,我不知道要使用 volatile 关键字,我想知道这是如何在纯 WinAPI 中完成的(因为我稍后可以使用 C 以外的语言) ).

最佳答案

关于c - WinAPI中如何让两个线程共享一个全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42660921/

相关文章:

c++ - 正则表达式匹配空格,但不在 "strings"

c++ - 是否可以使用 C/C++ 构建企业应用程序?

java - 如何让线程等待ReentrantLock被释放?

c - 在 C 中使用信号量进行多线程

delphi - Delphi中如何调用EnumSystemLocales?

windows - 检索最大化最小化窗口的窗口位置

c - 在c中访问进程独立寄存器的值

对 #if 表达式感到困惑

multithreading - JGit:是否有线程安全的方式来添加和更新文件

c++ - 为什么带有 CryptUnprotectData 的 RAD Studio CreateBlobStream 会返回额外的字符?