临界区段

✍ dations ◷ 2025-05-13 17:33:31 #协同控制,程序架构

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

相关

  • 班图语支班图语支是非洲尼日尔-刚果语系大西洋-刚果语族中的一个语支,其中包含约600种语言,有约两亿母语者。在整个非洲中部和南部很普及,尽管在中非和南非国家中英语、法语和葡萄牙语
  • 黄铁矿黄铁矿,主要成分是二硫化亚铁FeS2,是提取硫、制造硫酸的主要矿物原料。其特殊的形态色泽,有观赏价值。一些黄铁矿磨制成宝石也很受欢迎。黄铁矿可经由岩浆分结作用、热水溶液或
  • 奥斯瓦尔德·斯宾格勒奥斯瓦尔德·阿莫德·哥特弗里德·斯宾格勒(德语:Oswald Arnold Gottfried Spengler,1880年5月29日-1936年5月8日),德国历史哲学家、文化史学家及反民主政治作家。《西方的没落》
  • 澎湖县政府坐标:23°34′12″N 119°33′59″E / 23.57°N 119.566472°E / 23.57; 119.566472澎湖县政府是中华民国台湾省澎湖县最高层级的地方行政机关,在中华民国政府架构中为县自治
  • 东部南极洲南极洲东部也称大南极洲或简称“东南极”,指南极洲横贯南极山脉靠近印度洋和大西洋一侧地区,约占整个南极大陆的三分之二,包括科茨地、毛德皇后地、恩德比地、麦克罗伯特森地、
  • 查尔斯·金斯莱查尔斯·金斯莱(英语:Charles Kingsley,1819年-1875年)。英国文学家、学者与神学家。早年曾先后就学于皇家学院、伦敦大学以及剑桥大学,后常年担任牧师、教授并开始发表作品。他擅
  • 三国同盟条约德意日三国同盟条约,又作三国公约、三国盟约(英语:Tripartite Pact;德语:Dreimächtepakt;意大利语:Patto tripartito;日语:日独伊三国間条約〔日獨伊三國閒條約〕),于1940年9月27日由
  • 天道盟天元会天道盟天元会,是台湾三大犯罪组织之一的天道盟旗下的分会(第十九支会)。天元会、于1999年1月间,由林万成于树林镇(今树林区)筹组成立。在台北县树林(中正路总部)、板桥、桃园县(今桃
  • 球腔菌科球腔菌科(学名:Mycosphaerellaceae)是一种子囊菌门座囊菌纲煤炱目真菌的科。本科的多个品种都是植物病原体,会影响很多常见的植物品种,例如:桉树、myrtle family等及Proteaceae等,
  • 厦门大学出版社1985年5月7日 (1985-05-07)厦门大学出版社(Xiamen University Press),全称厦门大学出版社有限责任公司。成立于1985年5月7日,是教育部主管,厦门大学主办的出版社,也是目前福建唯