Операционная система OS2 Warp

       

Критические секции


Программист может организовать внутри задачи фрагмент кода, который должен выполняться в монопольном режиме по отношению ко всем другим задачам создавшего их процесса.

Такой фрагмент кода и называется критической секцией. Он ограничен сверху и снизу вызовом, соответственно, функций DosEnterCritSec и DosExitcritSec , не имеющих параметров:

// Начало критической секции DosEnterCritSec(); ... // Этот фрагмент задачи выполняется в монопольном // режиме по отношению к другим задачам процесса ... // Конец критической секции DosExitcritSec();

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

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

Представьте себе, например, что вы подключили к компьютеру нестандартное печатающее устройство, для печати на котором необходимо обращаться к портам специализированного контроллера. Если несколько задач, принадлежащих одному или разным процессам, начнут одновременную печать, это может привести к повреждению контроллера или принтера (со стандартным принтером ничего подобного произойти не может, так как IBM OS/2 выполняет все необходимые действия по синхронизации доступа).



Содержание раздела