Введение

Компьютерная концепция

DCEThreads — это реализация потоков POSIX Draft 4. DCE расшифровывается как "Distributed Computing Environment" (распределенная вычислительная среда). DCEThreads позволял пользователям создавать несколько потоков выполнения в рамках одного процесса. Она основана на интерфейсе pthreads.

История

DCE/RPC находился в разработке, но к тому времени комитет POSIX еще не завершил работу над потоками POSIX. Организации The Open Group пришлось решить, что использовать, и финальные потоки POSIX отличались от их выбора. Потоки POSIX Draft 4 изначально были ограничены (окончательный стандарт исправил эти ограничения). Microsoft полностью переняла DCE/RPC в Windows NT под названием MSRPC, а также в DCOM. Большинство проблем со стабильностью и надежностью, которые программисты связывают со службами DCOM – особенно утечки памяти, проблемы обработки исключений и нестабильность отмены потоков – можно проследить до использования потоков POSIX Draft 4. DCE/RPC достаточно сложен, поэтому обновление для решения и модернизации проблемы потоковой передачи POSIX Draft 4 требует глубоких и специализированных знаний в области программирования. Следовательно, несмотря на свои возможности, эталонная реализация DCE/RPC задерживалась из-за недостатка информации и ресурсов. Ключевое отличие между потоками POSIX Draft 4 и окончательной спецификацией POSIX threads, помимо того, что некоторые функции можно прервать, а другие – нет, заключается в отмене потоков. DCE/RPC использует отмену потоков для передачи сигналов через удаленный вызов процедур (RPC), так что, например, завершение потока в клиентском приложении приводит к завершению соответствующего потока на сервере таким же образом. Окончательная спецификация POSIX не включает в себя такую сложную методику отмены, и, учитывая трудности, с которыми столкнулись поставщики Unix при правильной реализации спецификации POSIX threads, она была исключена.

Последние события

Linux, с момента внедрения NPTL и ядра Linux 2.6, обеспечивает полноценную поддержку отмены потоков.

Текущее использование

DCEThreads теперь существует в основном как слой эмуляции.