C где определить мьютекс в многопоточной программе?

Я работаю над многопоточной программой, и у меня есть вопрос о том, где определить мьютекс.

Соответствующая информация: в программе есть main.c, где мы определяем конкретное действие в соответствии с пользовательским вводом. main вызывает master_function, которая находится в файле с именем master.c. В файле master.cмы создаем N потоков наряду с некоторыми другими действиями (не относящимися к делу). Потоки вызывают функцию с именем son_threads, расположенную в сыне .c, и им нужно использовать мьютекс, когда они входят в критическую область (редактирование нескольких глобальных переменных для предотвращения состояния гонки). Другой файл, который у меня есть, это type.h, где я определяю несколько глобальных переменных, которые мне нужно использовать.

Объявление мьютекса:

  pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;

Итак, я попытался определить мьютекс в моем type.h, чтобы он был виден в файлах son.c. При попытке скомпилировать выдает ошибку. Это правильно, поскольку я определяю этот мьютекс в нескольких файлах.

Но я почти уверен, что не могу определить мьютекс в файле son.c, потому что каждый раз, когда я создаю этот поток, мьютекс будет инициализироваться с настройками по умолчанию, что не позволит мне использовать его должным образом. . Не уверен в этом.

Мьютекс должен быть глобальной переменной, к которой имеют доступ N потоков. Так куда мне его положить?

Не знаю, правильно ли я объясняюсь. Стараюсь изо всех сил.

5
задан Bence Kaulics 15 May 2017 в 14:30
поделиться