#include #include #include #define MAX 254 void *viver(void*meuid); void main(argc, argv) int argc; char *argv[]; { int erro; int i, n; int *id; pthread_t tid[MAX]; if(argc != 2) { printf("erro na chamada do programa: p <#threads>\n"); exit(1); } n = atoi (argv[1]); printf("numero de threads: %d \n", n); if(n > MAX) { printf("o numero de threads e' maior que o maximo permitido: %d\n", MAX); exit(1); } for (i = 0; i < n; i++) { id = (int *) malloc(sizeof(int)); *id = i; erro = pthread_create(&tid[i], NULL, viver, (void *) (id)); if(erro) { printf("erro na criacao do thread %d\n", i); exit(1); } } pthread_exit(NULL); } void *viver (void* pi) { int contador; while(1) { printf("%d: vou vivendo!\n", *(int *)(pi)); contador=0; do contador++; while (contador<1000000); } }