fork(1) download
  1. #include <stdio.h>
  2. #include <pthread.h>
  3.  
  4. int shared = 0;
  5.  
  6. typedef struct {
  7. int increments;
  8. } ThreadData;
  9.  
  10. void* increment(void* arg) {
  11. ThreadData* data = (ThreadData*)arg;
  12. for(int i = 0; i < data->increments; i++) {
  13. shared++;
  14. }
  15. return NULL;
  16. }
  17.  
  18. int main() {
  19. int THREADS, INCREMENTS;
  20. printf("Enter number of threads: ");
  21. scanf("%d", &THREADS);
  22. printf("Enter number of increments per thread: ");
  23. scanf("%d", &INCREMENTS);
  24.  
  25. pthread_t threads[THREADS];
  26. ThreadData data = {INCREMENTS};
  27.  
  28. for(int i = 0; i < THREADS; i++) {
  29. pthread_create(&threads[i], NULL, increment, &data);
  30. }
  31.  
  32. for(int i = 0; i < THREADS; i++) {
  33. pthread_join(threads[i], NULL);
  34. }
  35.  
  36. printf("Final value of shared variable = %d\n", shared);
  37.  
  38. return 0;
  39. }
Success #stdin #stdout 0s 5320KB
stdin
5
100000
stdout
Enter number of threads: Enter number of increments per thread: Final value of shared variable = 500000