0%

程序安全局-锁

引言

锁,作为我们日常生活中最常见的物品。它让着我们的资源物品不会被他人取用,提供了更好的保护性。在程序中,也同样引入了锁的概念来保护程序中的某些重要资源。为也理解锁的原理与应用,我将搭配示例来讲解它们的实际用途与效果。

锁的分类

程序中锁的应用,最常见的莫过于数据库中的读写锁、行锁、表锁,亦或者是多并发程序中应用的线程锁。无论是数据库或是并发线程中,使用锁的主要目的就是为了在同一时间内,仅有一个对象可以获取资源,以此来保证线程结果的正确性。数据库的行锁、表锁亦是如此。在深入锁之前,我想我们应提前搞清一个问题,那么就是我们为什么需要在程序中使用锁。

何为锁

在传统的单线程编程中,我们无需考虑是否需要为线程加锁。因为所有程序都运行在一个主线程中,且所有的函数都是按照顺序进行的。但随着并发思想的兴起,应用单线程的方法就开始有问题出现了。我们可以从如下的对话中,得到答案:
avatar
图片中的故事,清晰的讲解了单线程、多线程的区别。这其中也有一些常用的名词,如: 竞争条件、临界区、锁变量。

竞争条件

在操作系统中,程序可能需要读取