2011-03-11 17 views
7

He estado leyendo algunos blogs sobre programación de subprocesos múltiples en ruby. Lo que noté es que el autor tiende a usar la palabra seguridad de hilo. Qué significa eso? ¿Por qué es importante escribir el código de seguridad de hilo?¿Qué significa seguridad con subprocesos?

+3

+1 para pensar en lo que está leyendo, no todo el mundo lo hace :-) – Chris

Respuesta

7

Si tiene un recurso (digamos una Lista global de libros, por ejemplo) y tiene dos hilos en ejecución que pueden modificar esta lista. Hay muchas situaciones en las que los datos de la lista serán inconsistentes.

  • (Tema A lee un libro ands muestra su Data)
  • (Tema B elimina el mismo libro, mientras que el de datos es utilizada por Tema A)
  • (enhebrar una ahora quiere añadir algo de información a la libro)

lo que tiene que hacer que el código flujos seguros de manera que en cualquier momento sólo un hilo solo puede tener acceso de escritura a la lista de libros.

bloqueo de bloqueo mencionado por SpyrosP ocurre cuando el hilo A bloquea la lista para escritura y espera a que el subproceso B añada datos en la lista. Porque ambos hilos esperarán el uno al otro a hacer algo que no pueden hacer. Eso solo ocurre si el mecanismo de seguridad del hilo no está implementado correctamente.

+1

Muy bien explicado. +1 Permítanme también agregar que la mayoría de los paquetes listos (como Queue para Python) se basan en mecanismos seguros para subprocesos listos para usar. – Spyros

+0

@SpyroP ¡Buen punto! Encontrará muchas estructuras de datos de Seguridad de subprocesos listas para usar en muchos lenguajes de programación. Estoy bastante seguro de que algunas de las Listas y Mapas de Ruby también se preocupan por eso. – Chris

Cuestiones relacionadas