Критические секции
Программист может организовать внутри задачи фрагмент кода, который должен выполняться в монопольном режиме по отношению ко всем другим задачам создавшего их процесса.
Такой фрагмент кода и называется критической секцией. Он ограничен сверху и снизу вызовом, соответственно, функций DosEnterCritSec и DosExitcritSec , не имеющих параметров:
// Начало критической секции DosEnterCritSec(); ... // Этот фрагмент задачи выполняется в монопольном // режиме по отношению к другим задачам процесса ... // Конец критической секции DosExitcritSec();
По своей сути критические секции предназначены для временной отмены мультизадачности в рамках одного процесса, поэтому в нашем случае с проигрыванием музыки на фоне выполнения расчета само по себе это несложное в использовании средство ничего не даст.
Обычно критические секции используются для организации доступа к таким ресурсам, которые можно использовать только последовательно.
Представьте себе, например, что вы подключили к компьютеру нестандартное печатающее устройство, для печати на котором необходимо обращаться к портам специализированного контроллера. Если несколько задач, принадлежащих одному или разным процессам, начнут одновременную печать, это может привести к повреждению контроллера или принтера (со стандартным принтером ничего подобного произойти не может, так как IBM OS/2 выполняет все необходимые действия по синхронизации доступа).