临界区段

✍ dations ◷ 2025-12-05 22:25:53 #协同控制,程序架构

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

相关

  • DNA连接酶DNA连接酶(EC 6.5.1.1),也称DNA黏合酶,在分子生物学中扮演一个既特殊又关键的角色,那就是把两条DNA黏合成一条。无论是双股或是单股DNA的黏合,DNA连接酶都可以借由形成磷酸双脂键
  • 真空烹调真空低温烹调法 (法语:Cuisine sous vide),又作低温慢煮法,在台湾又被称为舒肥法(为Sous vide的音译),是一种通过利用较低温度长时间加热的烹饪方法,目的是要带出原料(尤其是肉类)的最
  • 国际信息局国际信息局(Bureau of International Information Program)是美国国务院的一个下属机构,负责向国外公众介绍美国及其对外政策。
  • 归尔甫派和吉伯林派归尔甫派和吉伯林派(英语:Guelphs and Ghibellines)又称教宗派与皇帝派,是指位于中世纪意大利中部和北部分别支持教宗和神圣罗马帝国的派别。12和13世纪双方的分裂在意大利城邦
  • 国音常用字汇陶文 ‧ 甲骨文 ‧ 金文 ‧ 古文 ‧ 石鼓文籀文 ‧ 鸟虫书 ‧ 篆书(大篆 ‧  小篆)隶书 ‧ 楷书 ‧ 行书 ‧ 草书漆书 ‧  书法 ‧ 飞白书笔画 ‧ 
  • 401(k)计划401(k)退休福利计划,是美国于1981年创立一种延后课税的退休金账户计划,美国政府将相关规定明订在国税法第401(k)条中,故简称为401(k)计划。美国的退休计划有许多类,像公务员、大
  • 应用伦理学后设伦理学 规范性 · 描述性 效果论 义务论 美德伦理学 关怀伦理学 善与恶 · 道德生物伦理学 · 网络伦理 · 神经伦理学(英语:Neuroethics) · 医学 工程 
  • 斡亦剌歹斡亦剌歹(蒙古语:.mw-parser-output .font-mong{font-family:"Menk Hawang Tig","Menk Qagan Tig","Menk Garqag Tig","Menk Har_a Tig","Menk Scnin Tig","Oyun Gurban Ulus
  • 菲利普·班菜克菲利普·班菜克(捷克语:Filip Bandžak,1983年9月10日-),捷克歌剧演唱家,男中音。班菜克1983年9月10日出生于捷克斯洛伐克帕尔杜比采。他在1995年开始职业生涯。9岁那年,他就表现出
  • 德语正写法德语正写法(德语:Deutsche Rechtschreibung)是指一套指导德语书写的规则。德语作为书面语的书写规则总结可以追溯到马丁·路德翻译的路德版圣经(英语:Luther Bible)开始。1880年,德