Система: Linux
Язык: C
Описание:
У меня есть программа, похожая на базу данных, но для меня. Он прост, использует файлы и адаптирован к моим потребностям. Он написан на C. Выполняется 6 потоков: один управляющий поток и 5 рабочих потоков. Управляющий поток и рабочие потоки взаимодействуют с помощью очереди запросов, куда рабочие отправляют запрос и ждут его выполнения.
Каждый поток имеет свою собственную пару блокировок мьютекса и условные переменные. Теперь я хотел реализовать мультиобработку и распределить работу по разным процессам. Обратите внимание, что я никогда раньше не занимался мультиобработкой. Дело в том, что один рабочий поток сталкивается с очень обширной обработкой, поэтому он запрашивает новый процесс.
Управляющий поток создает новый процесс, и, насколько я знаю, у нового процесса должен быть запущен управляющий поток. вместе со всей памятью. Теперь я прочитал, что дочерние процессы должны все заново инициализировать, поэтому я удалил унаследованные потоки один за другим вместе с блокировками и условными переменными, но здесь происходит самое странное: каждый раз, когда освобождается третья условная переменная, входит pthread_cond_destroy бесконечный цикл или я не знаю, что происходит, но вызов никогда не возвращается.
Я использовал gdb и еще много чего, но не могу понять, что происходит.
Использовал strace , ltrace, gdb но ничего не помогло.
Подробнее здесь: https://stackoverflow.com/questions/787 ... n-variable
Форк в Linux: странный бесконечный цикл при освобождении условной переменной ⇐ Linux
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Освобождает ли std::unique_ptr автоматически память при освобождении объекта?
Anonymous » » в форуме C++ - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-