Michael Breeden Ответов: 2

При использовании мьютекса он ориентирован на многопотоковое исполнение, но это работает в параллельного?


Надеюсь, я правильно задаю этот вопрос... но тогда речь идет о продевании нитей.
У нас есть более старая версия (9.08) библиотеки dll Ghostscript, которая была скомпилирована с флагом потокобезопасности. Без него все мои тесты вплоть до версии 9.20 показали, что из 10 одновременных потоков около 4, как правило, не могут конвертировать PDF в PostScript.
Один из наших разработчиков завернул версию 9.51 (64 бит... круто) в семафор мьютекса. Теперь, если я правильно понимаю, это сделало бы его потокобезопасным, но только убедившись, что только один документ обрабатывается библиотекой dll одновременно, так что обработка будет последовательной, а не параллельной. Это верно?

Что я уже пробовал:

У меня есть тестовый жгут, так что я думаю, что мог бы сделать тест производительности на нем.

2 Ответов

Рейтинг:
2

RickZeeland

Вот некоторая информация от автора C# в двух словах: Потоковая передача в C# - Часть 2 - Базовая синхронизация[^]
Таким образом, мьютекс, если он реализован правильно, не только потокобезопасен, но и работает в масштабах всей системы для приложений.


Рейтинг:
19

Richard MacCutchan

Если предположить, что весь процесс заблокирован семафором, то ваше предположение верно. Если последние версии Ghostscript не являются потокобезопасными, то вы мало что можете сделать. Вы можете попробовать запустить преобразования как отдельные процессы, если это возможно.