Pthreads используя мьютекс - PullRequest
0 голосов
/ 23 октября 2019
Проблема множественных производителей - множественных потребителей (MPMC) В лекции мы говорили о том, как использовать семафоры для решения проблемы производитель-потребитель. Фактически, решение поддерживает несколько потоков производителей и несколько потоков потребителей. Итак, ваша первая задача - использовать переменные условия pthread mutex и pthread для реализации собственной версии семафора, которая поддерживает операции P () и V (). Во-вторых, используйте свою собственную реализацию семафора (т. Е. Сначала вам нужно реализовать семафор самостоятельно), чтобы написать параллельную программу, которая может создавать M потоков производителей и N потоков потребителей. Каждый производитель спит в течение случайного количества секунд (притворяется, что «производит» продукт), затем добавляет новый элемент в общий кольцевой буфер. Точно так же каждый потребитель удаляет элемент из общего кольцевого буфера, а затем спит в течение случайного количества секунд (притворяясь, что «потребляет» продукт). При производстве или потреблении каждая нить должна отслеживать, сколько продуктов было произведено или потреблено. Таким образом, вы можете сказать, работает ли ваша программа или нет. Например, если общее количество потребляемых продуктов меньше, чем общее количество произведенных продуктов, в вашей программе есть ошибки. Ваша исполняемая программа должна принимать пять аргументов точно в следующем порядке: Number_Producers, Number_Consumers, Max_Sleep_Seconds, Total_Number_Items2Produce и Ring_Buffer_Size. Каждый производитель или потребитель может спать от 1 секунды до MAX_Sleep_Seconds.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...