我必须归档一个叫 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/