c - 如何使包含在不同类线程中的全局变量在 c 中安全

标签 c multithreading thread-safety

我必须归档一个叫 main.c 和一个叫 disperse.c

disperse.c 创建线程来处理 main.c 中的负载,看起来像这样:

void *entry(void *arg) {  
    foo_function()  
}

void disperse() {  
    pthread_t thread;  
    pthread_create(&thread, NULL, entry, (void*) args);  
    pthread_join(thread, NULL);  
}

main.c 包含 foo_function() 和函数编辑全局变量。 有没有办法让main.c中包含的全局变量线程安全?

最佳答案

一般来说,最好避免全局变量,除非你绝对不能做你想做的事情。对于 pthreads,线程安全取决于函数。并非所有 pthreads 函数在共享数据上都是“线程安全的”。您还可以使用线程互斥锁来保护共享数据。这些本质上是对一 block 共享数据的一种锁定,一次只允许一个线程访问它。这篇文章很好的介绍了这个:https://randu.org/tutorials/threads/#protect

关于c - 如何使包含在不同类线程中的全局变量在 c 中安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53378866/

相关文章:

c - 这样创建的文件放在哪里?

c - 如何从 WAV 样本数据中提取频率?

c - 警告:从不兼容的指针类型传递''的参数1 [默认启用]

c++ - std::Threads of non-void functions (C++11)

c++ - 我如何(安全地)中断单独线程上的计算?

c - 打开/读/写是否缓冲?

java - 如何使用wait()和notifyAll()来一一运行线程?

java - 单例中的双重检查锁定

java - 在操作内同时运行线程为进度条执行,仅显示方法的流程执行

java - 类中的线程安全