29-避免在锁中使用阻塞操作
11.10 避免在锁中使用阻塞操作
阻塞操作 阻塞了当前线程,直到终结阻塞的事件出现。典型的阻塞操作包括控制台操作、文件操作和网络I/O操作。
在锁的临界区中使用阻塞操作会降低应用程序的性能。当一个线程在等待阻塞操作的终结事件时,应用程序的其余线程可能也在等待相同的事件。但是这些线程都不能访问临界区并执行代码(临界区中的代码)。
本节针对这种情况将实现一个案例。线程进入临界区后,从控制台上读取一行。在有用户输入之前,该指令都将导致应用程序的其余线程被阻塞。
阻塞操作 阻塞了当前线程,直到终结阻塞的事件出现。典型的阻塞操作包括控制台操作、文件操作和网络I/O操作。
在锁的临界区中使用阻塞操作会降低应用程序的性能。当一个线程在等待阻塞操作的终结事件时,应用程序的其余线程可能也在等待相同的事件。但是这些线程都不能访问临界区并执行代码(临界区中的代码)。
本节针对这种情况将实现一个案例。线程进入临界区后,从控制台上读取一行。在有用户输入之前,该指令都将导致应用程序的其余线程被阻塞。