临界区段

✍ dations ◷ 2025-11-30 20:54:23 #协同控制,程序架构

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

相关

  • 真核延伸因子真核延伸因子有两种:真核延伸因子1(eEF-1)和真核延伸因子2(eEF-2)。氨酰-tRNA合成酶 · 阅读框架 · 起始密码子 · 终止密码子 · 核糖体结合位点:夏因-达尔加诺序列(+/-) · 科扎
  • 一致在语言学中,一致(Agreement)是指句子或词组中的某些成分,其形式须要在一些语法范畴上保持一致。例如,在英语中,they is 是不正确的,因为 they 属复数,be动词须要使用复数限定形式(are
  • 现代医学人体解剖学 - 人体生理学 组织学 - 胚胎学 人体寄生虫学 - 免疫学 病理学 - 病理生理学 细胞学 - 营养学 流行病学 - 药理学 - 毒理学医学是以诊断、治疗和预防生理和心理
  • 核糖体蛋白质核糖体蛋白质(Ribosomal Protein,简称“核糖体蛋白”或“RP”)是参与构成核糖体的所有蛋白质的统称。由于核糖体蛋白质需要高浓度的盐溶液和强解离剂(如含高浓度Mg2+的67%的CH3C
  • 身体接触身体亲密(Physical intimacy)也称为肢体亲密,是指接近(英语:Proxemics)或是碰触其他人的举动。身体亲密是表达对他人感情或是感觉(像是友谊、浪漫或是性吸引力)的行为。身体亲密的例
  • 海淀区海淀区是中华人民共和国北京市的一个市辖区,位于北京城区西北部。全区面积426平方公里,南北长约30公里,东西最宽处29公里,约占北京面积2.53%,平原约占全区面积的四分之三。其治所
  • 北美水獭北美水獭(学名:Lontra canadensis),是一种产于北美洲的水獭,也叫北方水獭。分布于整个北美大陆的河岸与淡水水域,包括加拿大、阿拉斯加、美国西北、亚特兰大等州,以及墨西哥湾。北
  • 尼各老一世教宗圣尼各老一世(拉丁语:Sanctus Nicholaus PP. I)于858年4月24日至867年11月13日岀任教宗。尼各老一世宣称教宗在有关信仰和道德的领域对所有的基督徒(甚至涵括皇室成员)应该拥
  • 大卫·哈伯大卫·哈伯(英语:David Harbour,1975年4月10日-)是一位美国男演员。较知名的是在Netflix原创电视剧《怪奇物语》(2016年至今)中饰演吉姆·哈普警长一角。大卫·哈伯出生于纽约市,并
  • 兹姆里·利姆兹姆里·利姆(约公元前1775年—约公元前1759年在位)(英语:Zimrilim)马里的末任国王。约于沙姆希阿达德一世之子为马里长官时,他被流放。作为前国王雅弗多·利姆之子,他于沙姆希阿达