临界区段

✍ dations ◷ 2025-08-21 22:49:25 #协同控制,程序架构

在同步的程序设计中,临界区段(Critical section)指的是一个访问共享资源(例如:共享设备或是共享存储器)的程序片段,而这些共享资源有无法同时被多个线程访问的特性。

当有线程进入临界区段时,其他线程或是行程必须等待(例如:bounded waiting 等待法),有一些同步的机制必须在临界区段的进入点与离开点实现,以确保这些共享资源是被异或的使用,例如:semaphore。

只能被单一线程访问的设备,例如:打印机。

一个最简单的实现方法就是当线程(Thread)进入临界区段时,禁止改变处理器;在uni-processor系统上,可以用“禁止中断(CLI)”来完成,避免发生系统调用(System Call)导致的上下文交换(Context switching);当离开临界区段时,处理器回复原先的状态。

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

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

WINNT.H中定义的临界区数据结构如下:

struct RTL_CRITICAL_SECTION{   PRTL_CRITICAL_SECTION_DEBUG DebugInfo;   LONG LockCount;   LONG RecursionCount;   HANDLE OwningThread;   HANDLE LockSemaphore;   ULONG_PTR SpinCount;};

结构的各域的解释:

RTL_CRITICAL_SECTION_DEBUG结构如下:struct _RTL_CRITICAL_SECTION_DEBUG{

   WORD   Type;   WORD   CreatorBackTraceIndex;   RTL_CRITICAL_SECTION *CriticalSection;   LIST_ENTRY ProcessLocksList;   DWORD EntryCount;   DWORD ContentionCount;   DWORD Spare;

}结构的各域的解释:

MSDN Library -- Critical section

相关

  • span class=nowrapNpClsub4/sub/span四氯化镎或氯化镎(IV),是一种无机化合物,易潮解,化学式NpCl4,有强放射性。四氯化镎可由二氧化镎或草酸镎(IV)在含有四氯化碳蒸汽的氯气流中加热至450℃(或500℃在四氯化碳中加热
  • 双唇挤喉音(Bilabial ejective)是辅音的一种,用于一些口语中。用于表示此音的国际音标(IPA)是⟨pʼ⟩,其等价的X-SAMPA音标为p_>。双唇挤喉音的特征包括:除了以下列出的语言以外,此
  • 医疗科学学术中心医疗科学学术中心(又称:医疗科学合作伙伴联盟、医学学术中心)指由大学与医疗机构合作所组成的学术联盟,旨在进行生物医学研究、提供临床教学训练及医疗服务。类似合作伙伴常见于
  • 塔什干国际广播电台乌兹别克广播电台是乌兹别克斯坦的国家广播电台,开播于1921年。对内设有4个广播频道,并设有对外广播,主要广播语言有乌兹别克语、英语、汉语、俄语、阿拉伯语、维吾尔语等。200
  • 真情流露真情流露可以指:
  • 密尔瓦基密尔沃基(英语:Milwaukee)是一座位于美国威斯康辛州密尔沃基县密歇根湖畔的城市,是该州最大的城市,也是密尔沃基县的县府所在。威斯康辛州面积约140672平方千米,居全国第26位。位
  • 擦鞋工擦鞋工,因从前多数是童工担任而又名 擦鞋童、擦鞋仔,是替别人擦鞋为职业的人,生产工具是鞋油、鞋擦、干毛巾等。擦鞋可能是专门的,或者是补鞋业的附加服务。由于擦鞋员在工作时
  • 吉兰丹足球协会吉兰丹足球协会(Kelantan Football Association)是一间位于吉兰丹哥打巴鲁的职业足球俱乐部。成立于1946年,自2009年开始一直在马来西亚超级足球联赛角逐,他们的主场苏丹穆罕
  • 卡尔一世·路德维希卡尔一世·路德维希(德语:Karl I. Ludwig 1617年12月22日-1680年8月28日)是普法尔茨腓特烈五世(波西米亚的“冬季国王”)和英国查理一世妹妹伊丽莎白·斯图亚特的二子。卡尔一世
  • 水云水云(学名:),正式名称为冈村枝管藻,琉球语称为醋苔(醋苔、スヌイ)是一种类似发菜的褐藻纲物种,主要产于琉球(今属日本冲绳县)一带的珊瑚礁。它身体柔软,并会随海水漂浮。又称水云、海蕴