临界区段

✍ dations ◷ 2025-12-10 12:10:32 #协同控制,程序架构

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

相关

  • 量子力学入门量子力学(英语:quantum mechanics;或称量子论)是描述微观物质(原子、亚原子粒子)行为的物理学理论,量子力学是我们理解除万有引力之外的所有基本力(电磁相互作用、强相互作用、弱相
  • 1990年10月3日德国统一日(德语:Der Tag der Deutschen Einheit),即现代德国的国庆节,此为两德统一后的德国联邦政府所规定的全国法定假日,目的是为了纪念1990年10月3日,原德意志联邦共和国(原西德
  • 心脏压力测试心脏压力测试(英语:Cardiac stress test)也称为心脏诊断测试(英语:Cardiac diagnostic test)或心肺运动测试(英语:Cardiopulmonary exercise test),是有关心脏病学的测试,是在受控的临
  • 1947年1947年ABA选秀是国家篮球协会(NBA)前身美国篮球协会(ABA)举行的首届选秀。该次选秀举办于1947年7月1日,1947-48赛季开赛前。在这次选秀中,九支BAA球队以及来自国家篮球联盟的巴尔
  • Netscape Mail & NewsgroupsNetscape Mail & Newsgroups一般被称为Netscape Mail,是网景通信公司设计的跨平台电子邮件客户端以及新闻组程序。这个程序在Netscape 4到4.5之间是两个程序,一个是邮件程序-“
  • 秉志秉志(1886年4月9日-1965年2月21日),原名翟秉志,字农山,别号际潜,满族,翟佳氏。祖籍吉林,河南开封府驻防正蓝旗满洲旗籍举人。动物学家,中国近代生物学的主要开拓者和奠基人。参与发起
  • 杰里·布朗小埃德蒙·杰拉尔德·“杰里”·布朗(Edmund Gerald "Jerry" Brown, Jr.,1938年4月7日-),美国政治人物,民主党籍。曾在40年间两度担任加利福尼亚州州长(1975年到1983年及2011年到20
  • 秘境车站秘境车站(日语:秘境駅)一词源自日本,意指因为地处偏僻而人烟罕至和不易抵达的火车站,但通常能够激起铁道迷一探究竟。以日本铁道迷普遍的定义,大致符合以下条件,便可称为秘境车站。
  • なめこ印なめこ印,是日本轻小说作家。
  • 马丁·莱恩斯马丁·莱恩斯(英语:Martyn Lyons,1946年-),图书历史专家,生于伦敦,就读牛津大学,现任澳洲雪梨新南威尔士大学历史与哲学学院教授。专长为法国革命和拿破仑史,近年来钻研图书、阅读和书