临界区段

✍ dations ◷ 2025-11-21 22:28:38 #协同控制,程序架构

在同步的程序设计中,临界区段(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

相关

  • 楚雄市楚雄市(彝语:ꀒꇖꏃ)是位于中华人民共和国云南省中部的一座县级市,是楚雄彝族自治州的州府所在地。政府驻鹿城镇,位于云贵高原中部,元江水系与金沙江水系的分水岭地带,地跨东经100
  • 西澳西澳大利亚州(英语:Western Australia,缩写:WA),简称西澳,是澳大利亚联邦的一个州,位于澳大利亚西部,今划分为142个地方政府区域,幅员广达2,525,500平方公里,占全国总面积1/3,是面积最广
  • 睾丸扭转睾丸扭转是指当悬吊睾丸的精索扭转的现象。睾丸扭转会截断睾丸的血液供应。该症状具体表现为睾丸会突然发生剧烈疼痛,最常见的发病年龄段是少年期间。睾丸位置也可能会变高,甚
  • 鬼笔鬼笔属(学名:Phallus)属鬼笔目鬼笔科,其中大部分种具有恶臭且有毒,白鬼笔是著名的食用菌,红鬼笔可药用,而近期发现的新种食用菌香鬼笔具有丁香花香气。长裙竹荪和短裙竹荪在目前的
  • 四分体四分体指的是在动物细胞减数第一次分裂(减I)的前期,两条已经自我复制的同源染色体联会形成的四条染色单体的结合体。 只有在复制的同源染色体配对时,才形成四分体,即只有在减数第
  • 媾和和平条约,简称和约,是敌对双方所签署的一种条约,主要用以正式结束战争和武装冲突,签订双方通常是国家、政府或政治实体。当条约签署完成之后,双方的敌对状态将会结束。此与停战协
  • Happy Together 3 (欢乐在一起第三季)Happy Together(韩语:해피투게더)是韩国KBS2最受欢迎的搞笑节目之一。当中所有获邀的嘉宾因应主题而穿上相关的服饰。此外,节目内的《铁板Karaoke》环节亦是最受欢迎的环节。在
  • 极左派极左派(英语:Far-left politics),又称极左翼,是描述团体或个人政治立场在政治光谱中的位置极左。“极左”和“极右”也常意味着极端主义(Extremism)。有些极左团体不希望在现有制度
  • 罗里·金尼尔罗里·金尼尔(英语:Rory Kinnear,1978年2月17日-)是一位英格兰演员,是皇家莎士比亚剧团的成员,并在《Royal National Theatre》中演出。他演过不少莎士比亚戏剧,2011年在电视剧《黑
  • 施洋烈士墓施洋烈士墓,位于武汉市武昌区洪山南麓,毗邻宝通禅寺、北伐将士纪念碑、耿丹烈士墓等众多景点。为五四运动时著名进步人士施洋的纪念陵园。1956年被列为武汉市文物保护单位。在