'Mutex' undeclared (первое использование в этой функции)
Я хочу создать программу, которая получает число N в качестве аргумента и запускает N потоков, каждый из которых синхронно отображает одно из чисел от 1 до N, чтобы создать упорядоченную последовательность (12 ... N) *. где необходимо использовать одну и ту же функцию, выполняемую всеми потоками, и передать число, которое будет отображаться в качестве аргумента при запуске потока. Вот мой код :
#include<stdlib.h> #include<pthread.h> #include<sys/types.h> #include<unistd.h> //#include <pthread.h> // pour les threads #include <semaphore.h> // pour les semaphores #include <fcntl.h> // pour les flags O_CREAT, O_EXCL, ... // Discussion : perte de cycles // $ gcc -Wall synchro-valeur.c -lpthread int N; //sem_t mutex[10]; void* f0(int j) { for(int i = 0; i < 100; i++) { if(j < N-1){ //printf("sdfsfsfsdsds: %d\n",j); sem_wait(&mutex[j]); //puts("lol"); char k = (char)(j+1); puts(k+"\n"); sem_post(&mutex[j+1]); } else{ sem_wait(& mutex[N-1]); char k = (char)N; puts(k+"\n"); sem_post(&mutex[0]); } } return NULL; } int main(int argc, char *argv[]) { N = atoi(argv[1]); sem_t mutex[N]; unsigned int value[N]; /*value[0]=1; for(int i =1;i<N;i++){ value[i] = 0; } */ sem_init(&mutex[0],0,1); for(int i =1;i<N;i++){ sem_init(&mutex[i],0,0); } pthread_t pid[N]; for (int j=0;j<N;j++){ pthread_create(&pid[j],NULL,f0(j),NULL); } //puts("heyG"); for (int i=0;i<N;i++){ pthread_join(pid[i],0); } //puts("heyH"); for (int i=0;i<N;i++){ sem_destroy(&mutex[i]); } //puts("heyN"); return EXIT_SUCCESS; //return 0; }
Я не знаю, как устранить эту ошибку
ошибка: ‘mutex’ undeclared (первое использование в этой функции) sem_wait(&mutex[j]);
Что я уже пробовал:
Пожалуйста, кто-нибудь может помочь мне исправить эту ошибку
спасибо