* Esperando E/S: Un hilo puede bloquearse mientras espera que se lean o escriban datos en un archivo, o que se establezca una conexión de red.
* Esperando un candado: Un subproceso puede bloquearse mientras espera que otro subproceso libere el bloqueo de un recurso.
* Esperando una variable de condición: Un hilo puede bloquearse mientras espera que se señale una variable de condición.
El bloqueo es una parte importante de la sincronización de subprocesos, ya que garantiza que los subprocesos no accedan a recursos compartidos al mismo tiempo. Sin embargo, el bloqueo también puede provocar interbloqueos, que se producen cuando dos o más subprocesos esperan entre sí para liberar los bloqueos.
Para evitar interbloqueos, es importante diseñar cuidadosamente los mecanismos de sincronización de subprocesos. Una forma de hacerlo es utilizar algoritmos sin bloqueos, que no requieren subprocesos para adquirir bloqueos. Otra forma es utilizar un algoritmo de detección de interbloqueos, que puede detectar y resolver interbloqueos cuando ocurren.