Что происходит если я ReleaseMutex () дважды?

Ваше существующее приложение является монолитным или многоуровневым в отдельных процессах/слоях?

, Если разделено на уровни, можно преобразовать середину/уровень приложений для выполнения в контейнере OSGi.

В опыте моей команды, мы нашли попытку выполнить в веб-материале болезненный OSGi. Другие болевые точки, в спящем режиме и Джакартский Вход палаты общин.

я нахожу спецификации OSGi довольно читаемыми, и я рекомендую распечатать блок-схему, которая показывает алгоритм для загрузки класса. Я гарантирую, что у Вас будут моменты, "почему я получаю NoClassDefFoundError?": блок-схема скажет Вам почему.

8
задан alex tingle 29 September 2009 в 14:43
поделиться

1 ответ

peejay предоставил хорошую ссылку в своем комментарии на документацию ReleaseMutex . Я считаю, что эта строка из документации отвечает на ваш вопрос:

Функция ReleaseMutex не работает, если вызывающий поток не владеет мьютексом

Хотя это явно не сказано, я думаю, что освобождение мьютекса (в первый раз) заставляет вызывающий поток больше не владеть объектом мьютекса. Таким образом, второй вызов просто не удастся. Такая реализация также имела бы смысл, поскольку она позволила бы легко обнаружить этот тип ошибки (просто проверьте возвращаемое значение).

8
ответ дан 5 December 2019 в 20:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: