THREADS in C PROGRAM HELP! Using the thread3.c program provided below, itt will require some code modification. Those modifications include: - instead of 10,000 threads, create 40,000 threads in total - instead of creating just one kind of thread, create 4 kinds of threads (each with 10,000 instances) o group 1: adds 1 to counter o group 2: adds 5 to counter o group 3: subtracts 2 from counter o group 4: subtracts 10 from counter Run the program 5 times and take a screen shot showing the output of the run. Add comments throughout the code please! thread3.c given code: // Compile with: // // clang -lpthread thread3.c -o thread3 // or // gcc -lpthread thread3.c -o thread3 // #include #include #include #define NTHREADS 10000 // shared variable int counter = 0; // thread to be executed - unspecified variable arguments void *thread (void *vargp) { counter = counter +1; return NULL; } int main() { // array to keep Pthread IDs of created threads pthread_t tid[NTHREADS]; int i; printf("Counter starts at %d\n", counter); // create and run the thread for (i=0; i < NTHREADS; ++i){ pthread_create(&(tid[i]), NULL, thread, NULL); } //wait until all threads are done for (i=0; i < NTHREADS; ++i){ pthread_join(tid[i], NULL); } printf("Counter ends at %d\n", counter); return 0; }
THREADS in C PROGRAM HELP!
Using the thread3.c program provided below, itt will require some code modification. Those modifications include:
- instead of 10,000 threads, create 40,000 threads in total
- instead of creating just one kind of thread, create 4 kinds of threads (each with 10,000 instances)
o group 1: adds 1 to counter
o group 2: adds 5 to counter
o group 3: subtracts 2 from counter
o group 4: subtracts 10 from counter
Run the program 5 times and take a screen shot showing the output of the run. Add comments throughout the code please!
thread3.c given code:
// Compile with:
//
// clang -lpthread thread3.c -o thread3
// or
// gcc -lpthread thread3.c -o thread3
//
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define NTHREADS 10000
// shared variable
int counter = 0;
// thread to be executed - unspecified variable arguments
void *thread (void *vargp) {
counter = counter +1;
return NULL;
}
int main() {
// array to keep Pthread IDs of created threads
pthread_t tid[NTHREADS];
int i;
printf("Counter starts at %d\n", counter);
// create and run the thread
for (i=0; i < NTHREADS; ++i){
pthread_create(&(tid[i]), NULL, thread, NULL);
}
//wait until all threads are done
for (i=0; i < NTHREADS; ++i){
pthread_join(tid[i], NULL);
}
printf("Counter ends at %d\n", counter);
return 0;
}
Trending now
This is a popular solution!
Step by step
Solved in 3 steps with 1 images