Cómo decidir si usar hilos o crear un proceso separado en su aplicación para lograr el paralelismo.Proceso vs Hilos
Respuesta
hilos son de peso más ligero, y para los varios "trabajadores" que hacen sólo para utilizar todas las CPU availabe o núcleos, es mejor con los hilos.
Cuando necesita que los trabajadores estén mejor aislados y más robustos, como con la mayoría de los servidores, vaya con enchufes. Cuando un hilo se cuelga mal, normalmente elimina todo el proceso, incluidos otros hilos que trabajan en ese proceso. Si un proceso se vuelve agrio y muere, no toca ningún otro proceso, por lo que pueden continuar felizmente con su negocio como si nada hubiera sucedido.
Por lo general, debe usar procesos cuando las secuencias de ejecución individuales no necesitan compartir datos globales y le gustaría tener cada uno protegido del otro.
El grado de paralelismo depende principalmente de los procesadores físicos/núcleos disponibles en su máquina. Si tiene un solo procesador/máquina central, tener procesos separados puede causar demasiada carga. Los hilos generalmente serían preferidos en ese caso.
Si tiene múltiples núcleos/CPU, dependiendo de lo que hace cada proceso/subproceso, puede optar por los procesos si la sobrecarga está justificada. Los procesos obviamente tienen un nivel mucho mejor de aislamiento de memoria que los hilos, pero al mismo tiempo en Windows, los procesos son bastante pesados, en comparación con los hilos.
Por supuesto, los subprocesos pueden compartir datos en el mismo proceso, pero de nuevo necesitarás sincronizar el acceso a los datos compartidos para evitar el estado corrupto. Compartir datos entre procesos es más complicado, la sobrecarga (que supera a la simple sincronización de subprocesos) según los mecanismos utilizados, como canalizaciones con nombre, comunicación basada en sockets personalizados, utilizando un marco remoto, archivos compartidos/bases de datos, etc.
En Windows, los procesos son más pesados para crear hilos. Entonces, si tienes varias tareas más pequeñas, un hilo o grupo de hilos sería mejor. O use un grupo de procesos para reciclar los procesos. También compartir estado entre procesos es más trabajo que compartir estado entre hilos. Pero, de nuevo: los hilos podrían desestabilizar un proceso completo y llevar otros hilos hacia abajo. Si quiere minimizar la posibilidad de que eso suceda, podría ir por procesos separados. AppDomains de .Net podría ser un término medio entre ambos.
Un par de enlaces que pueden ayudarle a decidir, espero:
http://blog.labnotes.org/2006/08/29/why-processes-scale-better-than-threads/ http://www.jroller.com/cpurdy/entry/fastcgi_not_so_fast
Los procesos tienen memoria más aislada. Esto es importante por una serie de razones:
- Es más difícil que una sola tarea bloquee las otras tareas.
- Más memoria estará disponible por proceso. Esto es importante para aplicaciones grandes y de alto rendimiento como Apache o servidores de bases de datos, como Postgres. Esto es importante tanto para la memoria asignada como para los archivos mapeados en memoria.
- 1. Hilos Java vs Hilos OS
- 2. Hilos preventivos Vs Hilos no preceptivos
- 3. cpu cores vs hilos
- 4. Hilos vs procesos en .NET
- 5. Buscar todos los hilos de un proceso dado proceso id
- 6. hilos Tomcat Java vs roscas
- 7. Hilo de proceso VS: ¿dos procesos pueden compartir la misma memoria compartida? ¿Pueden dos hilos?
- 8. hilos primer plano vs subprocesos de fondo
- 9. scala actors vs hilos y bloqueo IO
- 10. ¿Qué es mejor: seleccionar vs hilos?
- 11. Señalización de todos los hilos en un proceso
- 12. Ejecutar el proceso de fondo en diferentes hilos en Java
- 13. Memoria de proceso Vs Heap - JVM
- 14. destructores de hilos en C++ 0x vs impulso
- 15. Hilos frente a núcleos
- 16. VBA + Hilos en MS Access
- 17. Process.waitFor(), hilos y InputStreams
- 18. ¿Hilos dentro de hilos en Java?
- 19. Múltiples hilos o procesos con hilos
- 20. WinInet vs WinHttp (servicio o proceso similar al servicio)
- 21. preproceso Vs. funciones de proceso en la plantilla Drupal
- 22. Cancelar un proceso de compilación en ejecución en VS
- 23. proceso de multiprocesamiento Python vs Python independiente VM
- 24. Proceso de programación de pseudocódigo vs. Desarrollo impulsado por prueba
- 25. Trabajando con hilos C#
- 26. Buscar hilos que se ejecutan para un proceso en particular en Linux
- 27. ¿Cuáles son las diferencias y las relaciones entre "proceso", "hilos", "tarea" y "trabajos" en Linux?
- 28. Linux: detectar en tiempo de ejecución que un proceso tiene múltiples hilos
- 29. ¿La instrucción lock() bloqueará todos los hilos en el proceso/appdomain?
- 30. ¿Por qué un único proceso con hilos se ejecuta en varios procesadores/núcleos?