临界区段

✍ dations ◷ 2025-11-28 16:32:57 #协同控制,程序架构

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

相关

  • 国际经济学国际经济学,是经济学的一门分支学科,主要探讨在跨国的经济活动中,生产与消费的循环过程。此学科以宏观的角度,则是着重于各国之间的贸易、投资与移民议题分析。其分支研究为国际
  • 攴部,为汉字索引中的部首之一,康熙字典214个部首中的第六十六个(四划的则为第六个)。就繁体和简体中文,攴部归于四划部首。攴部通常从右方为部字。攴和攵均可为部字。且无其他部
  • 椭圆嗜蓝孢孔菌椭圆嗜蓝孢孔菌(学名:Phellinus ellipsoideus)是属于锈革孔菌科木层孔菌属的多孔菌。椭圆嗜蓝孢孔菌是北京林业大学的崔宝凯与戴玉成于2006年在福建万木林自然保护区发现的。研
  • 帕特里克·亨利帕特里克·亨利(英语:Patrick Henry,1736年5月29日-1799年6月6日)生于弗吉尼亚州汉诺威,死于弗吉尼亚州夏洛特县),美国政治家,美国革命时期卓越的领导人,曾两次担任弗吉尼亚州州长(1776
  • IBIB可以指向:
  • 全知之眼上帝之眼,也称普罗维登斯之眼(英语:Eye of Providence)、理性之眼(英语:Eye of Logos)和全视之眼(英语:All-seeing Eye),常见的形式为一颗三角形的云及万丈光芒所环绕的眼睛,以出现在美
  • 化学计量学化学计量学(chemometrics)是一门应用数学、统计学和计算机技术的原理和方法来处理化学数据的学问,它是分析化学的三级学科,化学计量学可以优化化学量测过程,并从化学量测数据中最
  • 满文转写方案常见的满文拉丁字母转写方案有穆麟德转写、BabelPad转写、《新满汉大词典》转写和《五体清文鉴译解》转写。这些方案也可以用于锡伯文。新满汉大词典转写中,如果s和h相连与sh
  • 恩施州旅游轨道交通恩施州旅游轨道交通为中华人民共和国湖北省恩施自治州规划建设中的旅游轨道交通,包括悬挂式单轨以及地面缆车。2019年,恩施州正式和中铁磁浮交通有限公司签约,计划开建恩施旅游
  • 图-22M图-22M(俄文:Ту-22М;北约代号:,中译:逆火),是苏联图波列夫设计局研制的一款超音速可变后掠翼长程战略轰炸机。于1972年开始量产,1997年停产。截止2019年1月,仍有62架图-22M3在俄罗