临界区段

✍ dations ◷ 2025-11-27 14:44:46 #协同控制,程序架构

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

相关

  • 梁山伯与祝英台梁山伯与祝英台是中国四大民间传说之一,是一个口头传承的传说故事,叙述祝英台女扮男装求学,结识同窗梁山伯,最终却无法结下姻缘的爱情悲剧。中华人民共和国政府在2003年将梁祝传
  • 1420年
  • 明智光秀明智光秀(1528年-1582年7月2日),出身于美浓国的土岐源氏支脉。通称十兵卫,雅号咲庵。其父明智光纲(日语:明智光綱)早逝,受叔父明智光安照顾。正室为妻木熙子(实为光秀第二任妻子),嫡男是
  • 草铵膦草铵膦,固杀草, 英文名Glufosinate,其铵盐草丁膦(phosphinotricin)是一种非选择性除草剂。其作用机理是干扰谷氨酸的生物合成及氨的解毒。
  • 门第士族,又称世族,是中国历史上东汉至唐代,世代为官的士大夫阶层,是一种贵族化的官僚家族。宋代及以后,“士族”一词含义有所改变,士人取得官位后就是士族、士大夫,已没有世袭的意味。
  • 空军大学美国空军大学(Air University),是美国空军的教育训练司令部,总部设在阿拉巴马州的麦克斯韦-甘特空军基地。空军大学是美国空军进行专业军事教育的一个主要中心。该机构下属多个
  • 爱尔兰战士圣母大学爱尔兰战士队(英语:Notre Dame Fighting Irish)代表圣母大学参加国家大学体育协会(NCAA)第一级别的23项校际体育赛事,其中在许多项目中属于大西洋沿岸联盟。圣母大学也是
  • 重力异常重力异常(英语:Gravity anomaly)在大地测量学中用于描述真实重力与正常重力之间的差异。在大地水准面上,某点处的真实重力矢量与该点沿法线到参考椭球面上投影处的正常重力矢量
  • 一城美由希一城美由希(日语:一城 みゆ希,本名千枝浩子,1949年8月23日-)是日本的女性声优,Production baobab所属。1995年1996年1997年2000年2001年2003年2004年2005年2006年2007年2011年2013
  • 片桐且元京都府京都市の大徳寺玉林院采女、孝利、为元、片桐且元(1556年-1615年6月24日),日本战国时代、江户时代武将及大名。父亲是浅井氏家臣片桐直贞,母亲名字不明。其弟贞隆是江户时