Форк в 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 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как создать форк нескольких процессов от одного родителя?
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Как устранить ошибку PHP: exec() не может выполнить форк
    Anonymous » » в форуме Php
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Получение ошибки обнаружения повреждения кучи при освобождении памяти
    Anonymous » » в форуме C++
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Освобождает ли std::unique_ptr автоматически память при освобождении объекта?
    Anonymous » » в форуме C++
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Почему память RSS не уменьшается при освобождении памяти в C++ с помощью пула потоков? [дубликат]
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

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