Критические секции в потоках


uses SyncObjs;

// Объявляем раздел (для всех потоков, которые будут использовать этот раздел):

MyCriticalSection: TRTLCriticalSection;

// Создаём секцию:

InitializeCriticalSection(MyCriticalSection);

// Запустим несколько потоков. Делаем что-нибудь исключительное(?):

EnterCriticalSection(MyCriticalSection);
try
    // доступ к переменным, запись файлов, отправка сетвых пакетов, и т.д.
finally
    LeaveCriticalSection(MyCriticalSection);
end;

// После завершения всех потоков, освобождаем её:

DeleteCriticalSection(MyCriticalSection);

// В качестве альтернативы, вы можете использовать объект TCriticalSection