关键段(临界区或临界段): 当多个进程访问同一代码段时, 该段称为关键段。关键段包含需要同步以保持数据变量一致性的共享变量或资源。
简单来说, 关键段是需要原子执行的一组指令/语句或代码区域, 例如访问资源(文件, 输入或输出端口, 全局数据等)。
在并发编程中, 如果一个线程试图同时更改共享数据的值, 而另一个线程试图读取该值(即数据在线程之间的竞争), 则结果是不可预测的。
对此类共享变量(共享内存, 共享文件, 共享端口等)的访问要同步。很少有编程语言具有对同步的内置支持。
在编写内核模式编程(设备驱动程序, 内核线程等)时, 了解竞争条件的重要性至关重要。因为程序员可以直接访问和修改内核数据结构。
可以认为, 关键段的简单解决方案如下所示,
acquireLock();
Process Critical Section
releaseLock();
线程必须在执行关键段之前获得一个锁。该锁只能由一个线程获取。有多种方法可以在上述伪代码中实现锁定。让我们在以后的文章中讨论它们。
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。