¿Cuál es la diferencia entre una función de reentrada y una función de seguridad de subprocesos?Diferencia entre la función Reentrada y Thread-Safe
Respuesta
¿Has verificado wiki article on the subject. Lo explica bien, así que por favor mira eso para una discusión completa.
Unos pocos bits relevantes del artículo:
En informática, un programa de ordenador o subrutina es llamada entrante si puede ser interrumpido en medio de su ejecución, y ser llamado de nuevo con seguridad ("re -entrado ") antes de que sus invocaciones anteriores completen la ejecución. La interrupción podría ser causada por una acción interna, como un salto o una llamada, o por una acción externa, como una interrupción o señal de hardware. Una vez que la invocación reingresada se completa, las invocaciones anteriores reanudarán la ejecución correcta.
y
Esta definición de reentrada difiere de la de hilo de seguridad en entornos multi-hilo. Una subrutina reentrante puede lograr la seguridad de la hebra, pero ser reentrante solo puede no ser suficiente para ser seguro para subprocesos en todas las situaciones. Por el contrario, el código de seguridad de subprocesos no necesariamente tiene que ser reentrante (ver ejemplos a continuación).
Por favor, publique una respuesta real que resuma el enlace en caso de que se enfríe (como es el caso aquí y ahora). – nedR
Reentrante significa que no hay estado global (solo local).
Thread safe significa que no es posible que 2 (o más) hilos entren en conflicto entre sí (escribiendo valores conflictivos).
pero, como dice Brian, el artículo de la wiki lo explica bien ... –
Una función thread-safe se puede llamar de forma simultánea desde múltiples hilos, incluso cuando las invocaciones utilizan datos compartidos, ya que todos referencias a los datos compartidos se serializan.
Una función reentrante puede también ser llamado simultáneamente desde varios subprocesos, pero sólo si cada invocación utiliza sus propios datos.
Por lo tanto, una función del hilo de seguridad es siempre reentrante, sino una función reentrante no siempre es seguro para subprocesos.
La diferencia se puede cottoned con el ejemplo,
se dice que una clase sea reentrante si sus funciones miembro pueden ser llamados con seguridad de múltiples hilos, siempre que cada hilo utiliza una diferente instancia de la clase. La clase es segura para subprocesos si sus funciones miembro se pueden llamar de forma segura desde varios subprocesos, incluso si todos los subprocesos utilizan la misma instancia de la clase.
Fuente: Qt
- 1. diferencia entre función y función &
- 2. Cuál es la diferencia entre la función() {}() y la función() {}()
- 3. Hay una diferencia entre (función() {...}()); y (función() {...})() ;?
- 4. Diferencia de JavaScript entre la función y la nueva función
- 5. ¿Cuál es la diferencia entre función y función
- 6. Cuál es la diferencia entre `$ (ventana) .load (función() {})` y `$ (función() {})`
- 7. ¿Cuál es la diferencia entre "función" y "función"? en VIM?
- 8. ¿Cuál es la diferencia entre función (myVar) y (función) myVar?
- 9. Diferencia entre Private Sub, función y Clase
- 10. La diferencia entre $ * y $ @
- 11. diferencia entre una función virtual y una función virtual pura
- 12. diferencia entre el método y la función de Scala
- 13. ¿Cuál es la diferencia entre un algoritmo y una función?
- 14. ¿Cuál es la diferencia entre un método y una función?
- 15. ¿Cuál es la diferencia entre una subrutina y una función?
- 16. diferencia entre la función con paréntesis y sin
- 17. ¿cuál es la diferencia entre declaración de función y firma?
- 18. Diferencia entre la función glTexSubImage y glTexImage en OpenGL
- 19. ¿Cuál es la diferencia entre la función exec() de RegExp y la función match() de String?
- 20. ¿Cuál es la diferencia entre la plantilla de función y la función de plantilla?
- 21. Python: La diferencia entre usar "y "
- 22. ¿cuál es la diferencia entre:.! y: r !?
- 23. Código de reentrada vs. Seguridad de subprocesos
- 24. Las diferencias entre la función y document.ready $
- 25. Diferencia entre $ .getScript() y $ .get()
- 26. diferencias entre el procedimiento y la función y la rutina?
- 27. Emacs Lisp: diferencia entre (función (lambda ...)) y (lambda ...)?
- 28. ¿Cuál es la diferencia entre dict() y {}?
- 29. La diferencia entre Task.Factory.FromAsync y BeginX/EndX?
- 30. diferencia entre la especulación y la predicción
http: // stackoverflow.com/questions/2274254/what-kind-of-code-can-be-called-re-entrant/2274289 # 2274289 –
muy similar si no es idéntico: http://stackoverflow.com/questions/856823/threadsafe-vs- reentrante –