临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用。但是每一次,只能有一个线程使用它,一旦临界区资源被占用,其他线程要想使用这个资源,就必须等待。
比如,在一个办公室里有一台打印机。打印机一次只能执行一个任务。如果小明和小李同时需要打印文件,很显然,如果小明先下发打印任务,打印机就开始打印小明的文件。小李的任务就只能等待小明打印结束后才能打印。这里的打印机就是一个临界区的例子。
在并行程序中,临界区资源是保护的对象,如果意外出现打印机同时执行两个人物,那么最可能的结果就是打印出来的文件就会是损坏的文件。它既不是小明想要的,也不是小李想要的。