thread suma que pthread_t pthread_create pthread procesos para numeros libreria hilos hace funcion ejemplos con linux-kernel pthreads fork

linux-kernel - que - suma con hilos en c



Diferencia entre pthread y fork en gnu/Linux (3)

Debes mirar la página de manual de clone .

En particular, enumera todos los modos de clonación posibles y cómo afectan el proceso / hilo, el espacio de memoria virtual, etc.

Dices "hilos más fáciles de manejar en código": eso es muy discutible. Escribir código multihilo sin errores ni puntos muertos puede ser todo un desafío. A veces, tener dos procesos separados hace las cosas mucho más simples.

¿Cuál es la diferencia básica entre un pthread y fork wrt linux en términos de diferencias de implementación y cómo varía la programación (varía?)

Ejecuté strace en dos programas similares, uno con pthreads y otro con fork, ambos al final make clone () syscall con diferentes argumentos, así que supongo que los dos son esencialmente iguales en un sistema Linux pero con pthreads que son más fáciles de manejar en codigo.

¿Alguien puede dar una explicación profunda?

EDITAR: vea también una question relacionada


En C hay algunas diferencias sin embargo:

tenedor()

  • El propósito es crear un nuevo proceso, que se convierte en el proceso secundario de la persona que llama

  • Ambos procesos ejecutarán la siguiente instrucción después de la llamada al sistema fork ()

  • Se crean dos copias idénticas del espacio de direcciones, el código y la pila de la computadora, una para padres e hijos.

Pensando en el tenedor como si fuera una persona; Bifurcación provoca una clonación de su programa (proceso), que ejecuta el código que copió.

pthread_create ()

  • El propósito es crear un nuevo hilo en el programa que recibe el mismo proceso de la persona que llama

  • Los hilos dentro del mismo proceso pueden comunicarse usando la memoria compartida. (¡Ten cuidado!)

  • El segundo hilo compartirá datos, archivos abiertos, manejadores de señales y disposiciones de señales, directorio de trabajo actual, ID de usuarios y grupos. El nuevo hilo tendrá su propia pila, ID de hilo y registros sin embargo.

Continuando con la analogía; su programa (proceso) hace crecer un segundo brazo cuando crea un nuevo hilo, conectado al mismo cerebro.


En Linux, el sistema de llamadas clone clona una tarea, con un nivel configurable de uso compartido. fork() llama a clone(least sharing) y pthread_create() llama a clone(most sharing) . forking cuesta un poquito más que pthread_createing debido a la copia de tablas y la creación de asignaciones de COW para memoria.