临界区段

✍ dations ◷ 2025-07-09 15:24:18 #协同控制,程序架构

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

相关

  • 衰老人体解剖学 - 人体生理学 组织学 - 胚胎学 人体寄生虫学 - 免疫学 病理学 - 病理生理学 细胞学 - 营养学 流行病学 - 药理学 - 毒理学在生物学及医学上,老化是生理状态随时
  • 急性间质性肾炎间质性肾炎(Interstitial nephritis)、或肾小管-间质性肾炎(tubulo-interstitial nephritis)是一种影响肾脏肾小管周围间质的肾炎病症。这种病可以是急性的、这意味着它会突然发
  • α-鹅膏蕈碱α-鹅膏蕈碱(α-amanitin)是一种八氨基酸的环肽,它可能是毒伞肽中毒性最强的化合物。包括α-鹅膏蕈碱的毒伞肽类物质主要存在于鹅膏菌属的物种,例如毒鹅膏。α-鹅膏蕈碱的口服半
  • 天顺天顺(1457年-1464年)为中国明朝第六个皇帝明英宗朱祁镇二次登基后的年号,前后共八年。天顺八年正月明宪宗即位沿用。大明一统志于天顺五年四月成书。洪武 → 建文 → 永乐 →
  • 约克郡和林肯郡BBC约克郡和林肯郡(BBC Yorkshire and Lincolnshire)是英国广播公司(BBC)在英格兰的一个播出地区,也是BBC在英格兰的第12格播出地区,总部位于赫尔河畔京斯顿,系自BBC北部分裂产生,播
  • 外高加索社会主义联邦苏维埃共和国外高加索社会主义联邦苏维埃共和国(俄语:Закавказская Советская Федеративная Социалистическая Республика,缩
  • 埃翁多语埃温多语(ewondo)准确应称作科洛语(kóló)是一种班图语,使用者主要在喀麦隆共和国中部区和南部区部分地区。与喀麦隆一些其他语言较为相似,如ìtón (eton)语、nnanga语、bulu语
  • 越瓜菜越瓜菜(朝鲜语:월과채)是朝鲜族一种用粉丝制成的风味食品,源自朝鲜王朝的宫廷料理。其中“越瓜”在朝鲜语中指甜瓜,然而如今多被西葫芦所替代。其他的主要成分有香菇、牛肉、糯米
  • 阿克塞尔·米雄阿克塞尔·米雄(法语:Axel Michon,1990年12月16日-)是一位法国职业网球运动员。
  • 相火相火,中医术语,与君火相对。一般来说,君火指的是心火,而相火指的是肝火或肾火。但在中医中,不同医家、流派,对于这个概念始终争论不休。相火的名称,最早出自《内经》,在《素问天元纪