Потоковая безопасность () — это концепция программирования, применимая к многопоточным программам. Код потокобезопасен, если он функционирует исправно при использовании его из нескольких потоков одновременно. В частности, он должен обеспечивать правильный доступ нескольких потоков к разделяемым данным.

В общем случае потоковая безопасность достигается сложно. Но существует несколько источников выявления нарушений потоковой безопасности: доступ к глобальным переменным или динамической памяти (куче); выделение/освобождение ресурсов, имеющих глобальные ограничения (, процессы и др.); неявный доступ через ссылки и указатели; побочный эффект функций.

Есть несколько способов достигнуть потоковой безопасности: Реентерабельность Написание кода в таком стиле, что он может быть частично выполнен одним потоком, затем другим, и продолжен первым. Это требует сохранения состояния в локальных переменных, обычно в стеке, вместо глобальных или статических переменных. Линеаризуемость Написание кода процедур (операций) таким образом, что результат любого их параллельного выполнения эквивалентен некоторому последовательному выполнению.

Ссылки Writing Reentrant and Thread-Safe Code Статья "Design for thread safety"

Категория:Программирование Категория:Управление конкурентными потоками