Contestaré esta pregunta suponiendo que quisieras decir una llamada bloqueada o no bloqueada. Las llamadas pueden ser IO o de otra manera.
La respuesta es bastante evidente por sus nombres.
Suponga que lo siguiente es mi rastro de instrucciones:
UNA
si
foo ()
do
re
Entonces, hay dos instrucciones A y B que se ejecutan, seguidas de una llamada a ‘foo’ y luego, cuando regresa foo, se ejecutan C y D.
- ¿Dónde empiezo a aprender los microcontroladores ARM y qué software debo usar para programarlos en LINUX?
- ¿Puedes explicar sobre Linux embebido? ¿Hará grandes cambios en el campo de incrustado?
- ¿Cuáles son los principios básicos del sistema integrado?
- ¿Cuál es el papel del desarrollador del controlador del dispositivo en los sistemas integrados?
- ¿Cuál es el mejor microcontrolador para trabajar hoy en día, ARM Cortex-M4 o AVR?
Suponga que una llamada a foo abre un cuadro emergente (GUI simple con botones)
Caso I: foo está bloqueando –
La llamada a foo abrirá el cuadro emergente, y foo no volverá de inmediato, no hasta que se cierre el cuadro emergente. Por lo tanto, la ejecución de C y D tendrá que esperar hasta que el usuario haya terminado con la GUI. Una vez que el usuario elimina el cuadro, se ejecutan C y D.
CASO II : foo no es bloqueo.
En este caso, foo abrirá un cuadro emergente y el programa continuará la ejecución de C y D. Básicamente, lo que sucede es que hay un subproceso en segundo plano creado para manejar la GUI para que el subproceso principal no tenga que esperar. De esta manera, la llamada no se bloquea.
En otro escenario, suponga que foo debe leer algunos datos del búfer.
Caso I: foo está bloqueando –
En caso de que haya datos válidos para leer en el búfer, regresa de inmediato. De lo contrario, si el búfer está vacío, espera hasta que haya algunos datos en el búfer para que se lean. De esta manera bloquea el hilo principal.
CASO II : foo no es bloqueo –
Si no hay datos válidos en el búfer, esta función simplemente regresará. posiblemente estableciendo algún bit de error o devolviendo un -1. Cualquiera que sea la situación del búfer, no hace que el hilo principal espere.
Estos son solo dos ejemplos muy simples de llamadas bloqueantes / no bloqueantes, puede leer más en línea.