--Si aparece cinco veces, es porque son CINCO procesos. Ni en linux 2.0, ni en 3.0 ni en nada son hilos sin más: son procesos. --
¿A qué llamas tú un proceso? La llamada clone() dista de ser sencilla, pero en líneas generales el comentario al que respondes tiene razón. Hasta 2.4 los hilos aparecían con su PID.
Ejecuta ésto en un 2.4 compilando así: cc -o hola hola.c -lpthread
#include <pthread.h>
#include <sys/types.h>
#include <unistd.h>
void *worker(void* ptr) { pid_t p; printf("PID: %d\n",getpid()); sleep(20); }
main() {
int i;
pthread_t th[20];
for (i = 0 ; i < 20 ; i++) pthread_create(th+i,NULL,worker,NULL);
sleep(20);
for (i = 0 ; i < 20 ; i++) pthread_join(th+i,NULL);
exit(0);
}
--
Programs should be written for people to read,
and only incidentally for machines to execute
Re:Hasta la 2.4 seguro
(Puntos:2)( Última bitácora: Lunes, 22 Febrero de 2016, 07:16h )
¿A qué llamas tú un proceso? La llamada clone() dista de ser sencilla, pero en líneas generales el comentario al que respondes tiene razón. Hasta 2.4 los hilos aparecían con su PID.
Ejecuta ésto en un 2.4 compilando así: cc -o hola hola.c -lpthread
#include <pthread.h>
#include <sys/types.h>
#include <unistd.h>
void *worker(void* ptr) { pid_t p; printf("PID: %d\n",getpid()); sleep(20); }
main() {
int i;
pthread_t th[20];
for (i = 0 ; i < 20 ; i++) pthread_create(th+i,NULL,worker,NULL);
sleep(20);
for (i = 0 ; i < 20 ; i++) pthread_join(th+i,NULL);
exit(0);
}
Programs should be written for people to read, and only incidentally for machines to execute