Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cuándo regresa la función de selección?

¿Cuándo regresa la función de selección?

El llamado método de bloqueo, como su nombre indica, significa que el proceso o hilo debe esperar a que ocurra un determinado evento al ejecutar estas funciones. Si el evento no ocurre, el proceso o. El hilo está bloqueado y la función no puede regresar inmediatamente.

Por ejemplo, bloquear programas como connect, Accept, recv y recvfrom en la programación de sockets.

Otro ejemplo es la gran mayoría de llamadas a funciones y ejecuciones de declaraciones. Estrictamente hablando, se ejecutan de forma bloqueante.

(2) Sin bloqueo sin bloqueo

El llamado método sin bloqueo sin bloqueo significa que el proceso o hilo no tiene que esperar a que ocurra el evento al ejecutar esta función, una vez ejecutada, definitivamente regresará, la diferencia en el valor de retorno refleja la ejecución de la función. Si el evento ocurre, es lo mismo que el método de bloqueo. Si el evento no ocurre, se devuelve un código. para informar que el evento no ocurrió y el proceso o hilo continúa ejecutándose, por lo que la eficiencia es mayor.

Por ejemplo, declaración del programa: int len=read(fd, buffer, BUFSIZE); la función read solo lee una vez y devuelve el resultado independientemente de si los datos se leen o no. Otro ejemplo es while(1){len=read(fd, buffer, BUFSIZE); if(...)break;}, aunque puede leer los datos deseados en un bucle, no bloquea y desperdiciará en gran medida el sistema. recursos. .

Nota: Cuando se utiliza en la programación de sockets: fcntl(sockfd, F_SETFL, O_NONBLOCK), configurará sockfd en modo sin bloqueo y luego se perderán las funciones posteriores de conexión, aceptación, recepción y recepción. su función bloqueadora, pasa a ser una función no bloqueante.