HOW DO I COMPLETE THIS CODE SUCCESSFULLY? 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: //

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

HOW DO I COMPLETE THIS CODE SUCCESSFULLY?

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;
}

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps with 1 images

Blurred answer
Knowledge Booster
Race Condition
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education