Форк в Linux: странный бесконечный цикл при освобождении условной переменнойLinux

Ответить
Anonymous
 Форк в Linux: странный бесконечный цикл при освобождении условной переменной

Сообщение Anonymous »

Система: Linux
Язык: C
Описание:
У меня есть программа, похожая на базу данных, но для меня. Он прост, использует файлы и адаптирован к моим потребностям. Он написан на C. Выполняется 6 потоков: один управляющий поток и 5 рабочих потоков. Управляющий поток и рабочие потоки взаимодействуют с помощью очереди запросов, куда рабочие отправляют запрос и ждут его выполнения.
Каждый поток имеет свою собственную пару блокировок мьютекса и условные переменные. Теперь я хотел реализовать мультиобработку и распределить работу по разным процессам. Обратите внимание, что я никогда раньше не занимался мультиобработкой. Дело в том, что один рабочий поток сталкивается с очень обширной обработкой, поэтому он запрашивает новый процесс.
Управляющий поток создает новый процесс, и, насколько я знаю, у нового процесса должен быть запущен управляющий поток. вместе со всей памятью. Теперь я прочитал, что дочерние процессы должны все заново инициализировать, поэтому я удалил унаследованные потоки один за другим вместе с блокировками и условными переменными, но здесь происходит самое странное: каждый раз, когда освобождается третья условная переменная, входит pthread_cond_destroy бесконечный цикл или я не знаю, что происходит, но вызов никогда не возвращается.
Я использовал gdb и еще много чего, но не могу понять, что происходит.
Использовал strace , ltrace, gdb но ничего не помогло.

Подробнее здесь: https://stackoverflow.com/questions/787 ... n-variable
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»