Два потока, которые вы создаете (через reader_writer()
), ничего не делают. main()
просто входит в первый цикл do
без выхода.
Кроме того, вы, похоже, перепутали мьютекс, семафоры и переменные условия. Имена функций делают вид, что вы пытаетесь реализовать условные переменные в вашем классе. Но вы строите это как обертки для блокировки мьютекса.
И, наконец, вы звоните pthread_mutex_lock()
и др. на pthread_t
, когда эти функции должны вызываться на pthread_mutex_t
.
Возможно, есть и другие ошибки, но они действительно выпадают. По сути, вам необходимо пересмотреть многопоточное программирование как с точки зрения того, как создаются потоки, так и с точки зрения их синхронизации.