Pregunta

asistí a una entrevista hoy en la que el entrevistador me hizo la siguiente pregunta:

es re-entrada y la exclusión mutua flujos seguros? ¿Puede explicar por qué?

Yo soy relativamente nuevo en la programación concurrente y no podía responder a ella .. Pero me dijo ...

exclusión mutua es segura hilo. Pero reentrada no es y que es la razón por la que tenemos reentrantes cerraduras.

El entrevistador se trasladó a la siguiente pregunta, sin embargo a un área diferente ... Creo que ensucié éste para arriba ...

¿Qué está esperando que le diga cuando me pidió esto?

¿Fue útil?

Solución

respuesta correcta debe ser:

Sí que son aplicación de la seguridad de rosca.

re-entrada

Escribir código de tal manera que pueda ser ejecutado parcialmente por una tarea, volvió a entrar por otra tarea, y luego se reanudó a partir de la tarea original. Esto requiere que el ahorro de la información del estado de las variables locales de cada tarea, por lo general en su pila, en lugar de en las variables estáticas o globales.

un ejemplo

exclusión mutua

El acceso a los datos compartidos se serializa utilizando mecanismos que aseguren un solo hilo lee o escribe los datos compartidos en cualquier momento. Se requiere un gran cuidado si una pieza de código accede a varias piezas compartidas de ficha problemas incluyen las condiciones de carrera, callejones sin salida, livelocks, el hambre, y varios otros males enumerados en los libros de texto muchos sistemas operativos.

un ejemplo

Otros consejos

Ambos son seguros hilo - se puede leer también en la Wikipedia:
http://en.wikipedia.org/wiki/Reentrant_(subroutine) < br> http://en.wikipedia.org/wiki/Mutual_exclusion

mutexes reentrante son mutexes que se pueden bloquear varias veces desde el mismo hilo si se asegura que hay un desbloqueo correspondiente para cada cerradura.

http://en.wikipedia.org/wiki/Reentrant_(subroutine)

Los dos conceptos de reentrada y la seguridad de los subprocesos se relacionan con la forma en que manejan las funciones de recursos. Sin embargo, ellos no son los mismos.

Si bien el concepto de reentrada puede afectar a la interfaz externa de una función, hilo de seguridad sólo se refiere a la aplicación de la función y no su interfaz externa.

-. En la mayoría de los casos, para hacer un reentrante función no reentrante, su interfaz externa debe ser modificado de tal manera que todos los datos es proporcionada por la persona que llama de la función

-. Para hacer un seguro para subprocesos de función, sólo las necesidades de implementación de rosca insegura que ser cambiado, por lo general mediante la adición de bloques de sincronización para proteger los recursos compartidos de accesos concurrentes por diferentes hilos

Por lo tanto, la reentrada es una propiedad más fundamental que el hilo de seguridad y, por definición, conduce a hilo de seguridad: Cada función de reentrada es seguro para subprocesos; sin embargo, no todas las funciones thread-safe es reentrante.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top