2010-09-20 18 views
6

Asistí hoy a una entrevista en la que el entrevistador me hizo la siguiente pregunta:¿Estos hilos son seguros?

¿La reentrada y la exclusión mutua son seguras para subprocesos? Puedes explicar porque ?

Soy relativamente nuevo en la programación concurrente y no podía responder a ella .. Pero he dicho ...

exclusión mutua es hilo de seguridad. Pero la reentrada no es así y esa es la razón por la que tenemos cerraduras reentrantes.

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?

Respuesta

5

respuesta correcta debería ser:

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

reentrada

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

un ejemplo

La 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 gran cuidado si un fragmento de código accede a múltiples piezas compartidas de datos: problemas que incluyen condiciones de carrera, interbloqueos, bloqueos, inanición y varios otros males enumerados en muchos libros de texto de sistemas operativos.

un ejemplo

+0

¿Por qué un voto abajo? –

+0

(-1) la reentrada no es pausa y reanudación. Una función es reingresante si admite que varios hilos de ejecución "lo atraviesen" al mismo tiempo o con palabras simples puede ingresar la función mientras se está ejecutando otra ejecución de la función. –

+0

http://en.wikipedia.org/wiki/Thread_safety http://stackoverflow.com/questions/352365/code-re-entrancy-vs-thread-safety –

0

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

Ambos conceptos de reentrada y la seguridad de los subprocesos se refieren a la manera en que funciona manejan los recursos. Sin embargo, no son lo mismo.

Si bien el concepto de reentrada puede afectar la interfaz externa de una función, la seguridad de la secuencia solo se refiere a la implementación de la función y no a su interfaz externa.

- En la mayoría de los casos, para hacer una reentrada de la función no reentrante, su interfaz externa debe modificarse de modo que todos los datos sean provistos por la persona que llama de la función.

- Para que la función de subprocesos no sea peligrosa para subprocesos, solo se debe cambiar la implementación, generalmente agregando bloques de sincronización para proteger los recursos compartidos de los accesos simultáneos por diferentes subprocesos.

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

Cuestiones relacionadas