临界区段

✍ dations ◷ 2025-02-23 21:54:34 #协同控制,程序架构

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

相关

  • 金球奖最佳电影女配角金球奖最佳电影女配角(英语:Golden Globe Award for Best Supporting Actress – Motion Picture)是金球奖的重要奖项,1944年首度由好莱坞外国记者协会(Hollywood Foreign Press
  • 伪娘伪娘(日语:男の娘/おとこのこ Otokonoko),也称伪女,是日本文化中作女性化打扮的男性。伪娘是ACG中的常见的一种定型角色,在这类作品中的伪娘除了透过变装,也时常是天生就带有传统上
  • 要塞要塞是指险要的关隘,亦作要隘,常出现边城或战略区域的要害处,是一种特别加固且固定的军事设施。今天的要塞一词一般是指16世纪在欧洲特别流行用于对抗炮兵的防御设施。这种设施
  • 面条面或面条,一种用谷物或豆类的面粉加水和成面团,之后或者压或擀制成片再切或压,或者使用搓、拉、捏等手段,制成条状(或窄或宽,或扁或圆)或小片状的食品。可再经煮、炒、烩、炸等烹调
  • 163<< 160161162163164165166167168169>> 163是162与164之间的自然数。
  • 阿伦尼乌斯常数阿伦尼乌斯常数是阿伦尼乌斯方程中的重要参数。在阿仑尼乌斯方程中的A,如下 :其单位与其中的反应速率常数k一致。此方程最早由荷兰化学家范特霍夫在1884年根据实验结果归纳得
  • 2011/12赛季欧洲羽联巡回赛2011/12赛季欧洲羽联巡回赛(BE Circuit 2011/12),是欧洲羽联巡回赛的第25个赛季。本年度共包含31个比赛(原定的以色列羽毛球国际赛取消)。以下为欧洲羽联公布的赛程:
  • 2,2,4-三甲基戊烷2,2,4-三甲基戊烷是辛烷的一种异构体,又称异辛烷。异辛烷在内燃机的汽缸里燃烧时抗震性较好,是汽油抗爆震度的一个标准,其辛烷值定为100(正庚烷之辛烷值定为0)。是优良的发动机燃
  • 地球撞击数据库地球撞击数据库(Earth Impact Database)是一个收集地球撞击坑或撞击结构资讯的受到公信的网络数据库。地球撞击数据库由加拿大渥太华自治领天文台(Dominion Observatory)的卡莱
  • 机甲警察金属杰克机甲警察宣传图《机甲警察金属杰克》(日语:机甲警察メタルジャック、アーマードポリス メタルジャック 英语:Armored Police Metal Jack)是1991年日本Sunrise公司制作的机器人动