临界区段

✍ dations ◷ 2025-08-01 05:04:42 #协同控制,程序架构

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

相关

  • 场地障碍赛场地障碍赛为马术三项赛中的其中一项,于1866年,巴黎举行首届格兰披治场地障碍赛赛,于1900年则确认为奥运会项目。骑手和马匹要求在35米乘60米、45米乘70米或70米乘90米的场地中
  • span class=nowrapThClsub4/sub/span四氯化钍是一种无机化合物,化学式为ThCl4,有放射性。四氯化钍可由金属钍、碳化钍或氢化钍和氯气反应得到:用氯气作用于二氧化钍和碳的混合物也能得到氯化钍:四氯化钍在潮湿环境
  • SSE公司SSE公司(SSE plc),旧称苏格兰和南方能源公司(Scottish and Southern Energy plc),是英国的一家能源公司,总部位于苏格兰珀斯。SSE公司在伦敦证券交易所上市,是FTSE100指数的成份股之
  • LTE-A高级长期演进技术(英语:LTE-Advanced,简称LTE-A,在中国大陆称4G+)是长期演进技术(LTE)的提升版本,理论上网速度比3G快十倍以上,也是4G规范的国际高速无线通信标准。它是一个行动通讯
  • 石绵沉滞症石绵沉滞症也称为石绵肺,是一种石绵纤维造成肺长期发炎及纤维化留疤(英语:Pulmonary fibrosis)的病症,症状有呼吸困难、咳嗽、喘鸣和胸痛,可能带来的并发症有肺癌、间皮瘤和肺性心
  • 257<< 250251252253254255256257258259>> 257是256与258之间的自然数。
  • 埃马纽埃尔·夏布里埃亚历克西斯-埃马纽埃尔·夏布里埃(法语:Alexis-Emmanuel Chabrier,1841年1月18日-1894年9月13日),法国浪漫主义作曲家。夏布里埃听了瓦格纳的歌剧《特里斯坦与伊索尔德》后,决定放
  • 加速规加速规(英语:accelerometer),又称加速计、加速针、加速度传感器、重力加速度传感器等等,是测量加速度的设备。相对于远距感测的设备,它测量的是自身的运动。加速规种类多样,其常用
  • 咖啡驼孢锈菌(J.F.Hennen & M.M.Hennen (2003))咖啡驼孢锈菌()能够造成咖啡锈病,目前在全世界的咖啡种植地区都能被发现,严重时会造成咖啡树大量的落叶,甚至死亡,对咖啡产业具有巨大的杀伤力。该
  • 拉脱维亚足球协会拉脱维亚足球协会(拉脱维亚语:Latvijas Futbola federācija,简称LFF)是拉脱维亚的足球主管团体,总部设于里加,负责组织各级联赛(最高级别是拉脱维亚足球高级联赛)、拉脱维亚杯(Latvi