Название: Рекурс в смешанном коде Отправлено: Igors от Август 21, 2010, 23:35 Добрый день
Есть несколько ниток выполняющих однотипную работу параллельно. Все они могут вызывать плагины (dll). Но дело в том что не все плагины thread-safe (потокобезопасны). Решение простое: защищаю вызов каждого плагина своим мутексом Код
Все хорошо, работает (вместо мутекса используется др примитив но суть та же самая). Только 1 нитка может вызвать "опасный" код. остальные будут ждать. Но вот проблема: некоторые плагины рекурсивны. То есть изнутри CallPlug_1 вызовется хост, которому опять может понадобиться вызов CallPlug_1 (глубина рекурсии устанавливается пользователем). Понятно что получаю dead lock с таким плагином. Мне известно место где плагин обратился к хосту, но если попробую отпереть мутекс - налетят др. нитки и плагин рухнет. Что будем делать? Спасибо Edit: поторопился запостить - решение оказалось совсем простым :) Название: Re: Рекурс в смешанном коде Отправлено: Rcus от Август 22, 2010, 00:44 enum QMutex::RecursionMode?
Название: Re: Рекурс в смешанном коде Отправлено: Igors от Август 22, 2010, 00:49 enum QMutex::RecursionMode? Точно :) |