Ответ
 
Опции вопроса Поиск в этом вопросе Опции просмотра
  #1  
Старый 30.09.2011, 21:08
Аватар для Guest
Guest
Вопрос
Сообщений: n/a
По умолчанию

Добрый деньЕсть несколько ниток выполняющих однотипную работу параллельно. Все они могут вызывать плагины (dll). Но дело в том что не все плагины thread-safe (потокобезопасны). Решение простое: защищаю вызов каждого плагина своим мутексомКодC++ (Qt)QMutexLocker lock(&mutex_1);CallPlug_1();Все хорошо, работает (вместо мутекса используется др примитив но суть та же самая). Только 1 нитка может вызвать "опасный" код. остальные будут ждать. Но вот проблема: некоторые плагины рекурсивны. То есть изнутри CallPlug_1 вызовется хост, которому опять может понадобиться вызов CallPlug_1 (глубина рекурсии устанавливается пользователем). Понятно что получаю dead lock с таким плагином. Мне известно место где плагин обратился к хосту, но если попробую отпереть мутекс - налетят др. нитки и плагин рухнет. Что будем делать?СпасибоEdit: поторопился запостить - решение оказалось совсем простым
Ответить с цитированием
Ответ



Похожие вопросы
Тема Автор Раздел Ответов Последний вопрос или ответ
Альтернатива бутылке - при смешанном вскармливании??? Guest Продолжение старого архива 0 01.10.2011 08:08
Слот-сигнал рекурс Guest Продолжение нового архива 0 28.09.2011 20:22
Допаивание водой при смешанном и искусственном вскармливании Guest Продолжение нового архива 0 21.09.2011 15:17
Вопрос о смешанном вскармливании Guest Новый архив 3 0 04.09.2011 09:07



© www.otvetnemail.ru - Форум вопросов и ответов.