Re: Dudas sobre concurrencia: ¿fork o threads?

Miguel Araujo muchochini en gmail.com
Mie Feb 13 20:32:44 CET 2008


Muchas gracias por tu explicación Rafael, me ha quedado bien claro el
asunto. Según te entiendo en Linux (sistema en el que programo python) hago
un fork crea dos procesos pesados (no en el sentido en que le cueste
crearlos, sino en que son 2 procesos distintos que no comparten memoria
¿no?), si necesito que se comuniquen usaría sockets, pipes con o sin nombre,
ficheros con lock....

Como yo quiero que entre los threads haya memoria compartida tendré que usar
semáforos y la memoria compartida, que por lo que he entendido viene por
defecto ¿no? Pero esto tiene que controlarlo el programador con la
consecuente sencillez de error ¿correcto?

Gracias de nuevo, Un saludo
       Miguel Araujo

El día 13/02/08, Rafael Villar Burke <pachi en rvburke.com> escribió:
>
> Miguel Araujo wrote:
> > Por lo que el problema se complica. La pregunta que me ha surgido es
> cuál es
> > la diferencia entre crear threads o hacer forks. Es solo desde el punto
> de
> > vista de como crea el proceso el sistema operativo, todo el rollo de
> proceso
> > ligero o pesado, copy on write de memoria o duplicación de regiones...
> ¿Da
> > igual si lo hago con threads o forks? ¿alguna diferencia real? ¿es uno
> más
> > fácil que otro?
> >
> Hasta donde sé, los fork (nuevos procesos) son mucho más costosos en
> win32 y, junto con la poca capacidad de gestión de procesos de la que
> disponía hasta recientemente esa plataforma, ha hecho que los hilos
> fuesen la única opción 'ligera' para manejar la concurrencia en win32.
> Eso ha llevado a que sean las interfaces más manejables en esa plataforma.
>
> Otra ventaja, aparte de que la plataforma prácticamente no de soporte a
> otros modelos de concurrencia, es que los recursos con compartidos entre
> hilos.
>
> En Linux, prácticamente es nulo el coste de creación de un nuevo
> proceso, por lo que es la manera más natural de abordar el problema, con
> menores complicaciones que los efectos colaterales y la sincronización
> entre hilos, y con la ventaja de que la fragilidad de cada proceso no
> tiene por qué comprometer la aplicación, al tener espacios de memoria y
> de ejecución diferentes.
>
> Por ahí dicen que los hilos son el demonio (threads are evil) ;), pero
> supongo que todo depende de la aplicación, la plataforma, y tus
> necesidades...
>
> Saludos,
>
> Rafael Villar Burke
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
>
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es