本页使用了标题或全文手工转换

臨界區段

维基百科,自由的百科全书
(重定向自临界区
跳转至: 导航搜索

在同步的程式設計中,臨界區段Critical section)指的是一個存取共用資源(例如:共用裝置或是共用記憶體)的程式片段,而這些共用資源有無法同時被多個執行緒存取的特性。

當有執行緒進入臨界區段時,其他執行緒或是行程必須等待(例如:bounded waiting 等待法),有一些同步的機制必須在臨界區段的進入點與離開點實現,以確保這些共用資源是被互斥或的使用,例如:semaphore

只能被單一執行緒存取的裝置,例如:印表機

一個最簡單的實現方法就是當執行緒/線程(Thread)進入臨界區段時,禁止改變處理器;在uni-processor系統上,可以用"禁止中斷(CLI)"來完成,避免发生系统调用(System Call)导致的上下文交換(Context switching);當離開臨界區段時,處理器回復原先的狀態。

Windows操作系统的临界区[编辑]

Windows操作系统,CRITICAL_SECTION是一种同步对象类型,用于同一个进程内的多线程同步访问资源。如果是跨进程同步,需要使用互斥锁(mutex)。

临界区对象首先需要初始化,通过调用操作系统API函数InitializeCriticalSection。各个线程调用函数 EnterCriticalSection, TryEnterCriticalSection, 或LeaveCriticalSection来使用临界区。使用结束后或者重初始化临界区之前,需要调用 DeleteCriticalSection 。

外部連結[编辑]

MSDN Library -- Critical section