Я сделал это недавно для проекта, концепция, которую я реализовал, состояла в том, чтобы один поток запускал все остальные, а затем использовал семафоры и мьютексы для управления проблемами синхронизации между процессами при работе с общей памятью.
Концепция монитора в контексте шаблона проектирования монитора представляет собой конструкцию, которая в основном предназначена для того, чтобы скрыть взаимное исключение. Эта концепция выражена в C ++ Boost, но она не существует в ядре C ++ или C. То, как вы выполняете этот тип работы в C, заключается в использовании старых добрых мьютексов (двоичных семафоров) и семафоров. Вы можете прочитать больше об этом здесь .
Ниже приведен базовый способ инициализации семафора и мьютекса, вам может потребоваться немного прочитать о том, как и когда использовать каждый из них, поскольку это немного длинно, чтобы охватить здесь, но здесь ссылка, с которой можно начать.
pthread_mutex_t myMutex;
sem_t mySemaphore;
int status;
status = pthread_mutex_init(&myMutex, NULL);
if(status != 0)
exit_with_error("There was an Error Initalizing the Mutex\n");
status = sem_init(&mySemaphore, 0, 0);
if(status != 0)
printf("There was an Error Initalizing the Semaphore\n");