fork download
  1. /*
  2.  * Exemplo de uso de Pthreads em C
  3.  * Compile com:
  4.  * gcc -pthread main.c -o prog
  5.  * Ou, em IDEs online, marque “Run with pthread support”.
  6.  */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <pthread.h>
  11.  
  12. #define NUM_THREADS 5
  13.  
  14. // Função que cada thread irá executar
  15. void* rotina(void* arg) {
  16. int id = *(int*)arg;
  17. printf("Olá do thread %d!\n", id);
  18. // Simula trabalho
  19. for (int i = 0; i < 3; i++) {
  20. printf("Thread %d em execução, passo %d\n", id, i + 1);
  21. }
  22. pthread_exit(NULL);
  23. }
  24.  
  25. int main() {
  26. pthread_t threads[NUM_THREADS];
  27. int thread_ids[NUM_THREADS];
  28. int rc;
  29.  
  30. // Cria as threads
  31. for (int i = 0; i < NUM_THREADS; i++) {
  32. thread_ids[i] = i;
  33. rc = pthread_create(&threads[i], NULL, rotina, &thread_ids[i]);
  34. if (rc) {
  35. fprintf(stderr, "Erro ao criar a thread %d, código %d\n", i, rc);
  36. exit(EXIT_FAILURE);
  37. }
  38. }
  39.  
  40. // Aguarda término de todas as threads
  41. for (int i = 0; i < NUM_THREADS; i++) {
  42. pthread_join(threads[i], NULL);
  43. }
  44.  
  45. printf("Todas as threads finalizaram. Programa encerrado.\n");
  46. return 0;
  47. }
  48.  
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
Olá do thread 4!
Thread 4 em execução, passo 1
Thread 4 em execução, passo 2
Thread 4 em execução, passo 3
Olá do thread 3!
Thread 3 em execução, passo 1
Thread 3 em execução, passo 2
Thread 3 em execução, passo 3
Olá do thread 2!
Thread 2 em execução, passo 1
Thread 2 em execução, passo 2
Thread 2 em execução, passo 3
Olá do thread 1!
Thread 1 em execução, passo 1
Thread 1 em execução, passo 2
Thread 1 em execução, passo 3
Olá do thread 0!
Thread 0 em execução, passo 1
Thread 0 em execução, passo 2
Thread 0 em execução, passo 3
Todas as threads finalizaram. Programa encerrado.