【发布时间】:2022-01-17 04:36:40
【问题描述】:
我正在尝试使用 mutex 来使用 threads 进行同步,但似乎我的代码抛出了“segmentation fault core dumped " 每次编译后都会出错。
#include <pthread.h>
#include <stdio.h>
pthread_mutex_t mutex;
int *s = 0;
void *fonction(void * arg0) {
pthread_mutex_lock( & mutex);
*s += *((int *)arg0) * 1000000;
pthread_mutex_unlock(&mutex);
}
int main() {
pthread_t thread[5];
int ordre[5];
for (int i = 0; i < 5; i++)
ordre[i] = i;
for (int i = 0; i < 5; i++)
pthread_create(&thread[i], NULL, fonction, & ordre[i]);
for (int i = 0; i < 5; i++)
pthread_join(thread[i], NULL);
printf("%d\n", * s);
return 0;
}
【问题讨论】:
-
你没有初始化你的
mutex。您可以使用pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;初始化全局变量 -
谢谢,但仍然抛出相同的错误。我将再次尝试查看我的代码
-
s未初始化,未指向有效内存。 -
确认!摆脱那些
5并使用常量或变量! -
当然感谢 lmao 使用常量让你的代码总是更具可读性