如何理解同步中的关键段?详细指南

2021年3月28日14:08:15 发表评论 872 次浏览

关键段(临界区或临界段): 当多个进程访问同一代码段时, 该段称为关键段。关键段包含需要同步以保持数据变量一致性的共享变量或资源。

简单来说, 关键段是需要原子执行的一组指令/语句或代码区域, 例如访问资源(文件, 输入或输出端口, 全局数据等)。

在并发编程中, 如果一个线程试图同时更改共享数据的值, 而另一个线程试图读取该值(即数据在线程之间的竞争), 则结果是不可预测的。

对此类共享变量(共享内存, 共享文件, 共享端口等)的访问要同步。很少有编程语言具有对同步的内置支持。

在编写内核模式编程(设备驱动程序, 内核线程等)时, 了解竞争条件的重要性至关重要。因为程序员可以直接访问和修改内核数据结构

如何理解同步中的关键段?详细指南

可以认为, 关键段的简单解决方案如下所示,

acquireLock();
Process Critical Section
releaseLock();

线程必须在执行关键段之前获得一个锁。该锁只能由一个线程获取。有多种方法可以在上述伪代码中实现锁定。让我们在以后的文章中讨论它们。

如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: