
Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN: 9780133594140
Author: James Kurose, Keith Ross
Publisher: PEARSON
expand_more
expand_more
format_list_bulleted
Question
Modify and run the program shown below in the following way. There is
an array of 20 elements defined in the program. The elements of the array are:
[20 18 16 14 12 10 8 6 4 2 -20 -18 -16 -14 -12 -10 -8 -6 -4 -2]. Thread 1 adds the first five
elements [20, 18, 16, 14, 12], Thread 2 adds the next five elements [10, 8, 6, 4, 2], ..., Thread 4
adds the last five elements [-10 -8 -6 -4 -2]. Finally, the sum of all the 20 elements is printed by
the main program.
include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#define NUM_THREADS 3
int counter=1;
an array of 20 elements defined in the program. The elements of the array are:
[20 18 16 14 12 10 8 6 4 2 -20 -18 -16 -14 -12 -10 -8 -6 -4 -2]. Thread 1 adds the first five
elements [20, 18, 16, 14, 12], Thread 2 adds the next five elements [10, 8, 6, 4, 2], ..., Thread 4
adds the last five elements [-10 -8 -6 -4 -2]. Finally, the sum of all the 20 elements is printed by
the main program.
include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#define NUM_THREADS 3
int counter=1;
void *PrintHello(void *threadid)
{
counter = 2*counter+ (int) threadid;
printf("\n Thread Id: %d Counter: %d\n", threadid, counter);
pthread_exit(NULL);
}
int main(int argc, char *argv[])
{
pthread_t threads[NUM_THREADS];
int rc, t;
for(t=0;t<NUM_THREADS;t++){
printf("Creating thread %d\n", t);
rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
if (rc){
printf("ERROR; return code from pthread_create() is %d\n", rc);
exit(-1);
}
}
printf("\n Counter: %d\n", counter);
pthread_exit(NULL);
}
{
counter = 2*counter+ (int) threadid;
printf("\n Thread Id: %d Counter: %d\n", threadid, counter);
pthread_exit(NULL);
}
int main(int argc, char *argv[])
{
pthread_t threads[NUM_THREADS];
int rc, t;
for(t=0;t<NUM_THREADS;t++){
printf("Creating thread %d\n", t);
rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
if (rc){
printf("ERROR; return code from pthread_create() is %d\n", rc);
exit(-1);
}
}
printf("\n Counter: %d\n", counter);
pthread_exit(NULL);
}
Expert Solution

This question has been solved!
Explore an expertly crafted, step-by-step solution for a thorough understanding of key concepts.
This is a popular solution
Trending nowThis is a popular solution!
Step by stepSolved in 2 steps with 2 images

Knowledge Booster
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-engineering and related others by exploring similar questions and additional content below.Similar questions
- Consider the BadReaderWriter.java program attached with this. The program has three threads, namely, one reader thread and two writer threads, and they all access the same list of numbers. The reader thread reads the list and prints it to the terminal. The writer threads append numbers to the list. At any point in time, if either of the writer threads finds that the list contains n elements, then it appends the number n + 1 to the list. Run this program, examine the output, and identify the problems.Fix these problems by implementing the acquireLock() and releaseLock() methods in the code.arrow_forwardWrite a program that lets the user enter numbersfrom a graphical user interface and displays them in a text area, as shownin Figure a. Use a linked list to store the numbers. Do not store duplicatenumbers. Add the buttons Sort, Shuffle, and Reverse to sort, shuffle, andreverse the list.arrow_forwardConsider the following linked list and pointer called temp: head 3 6 2 10 エローミー H temp + We then perform the following operations: 1. Create a variable called x, and assign it the value obtained from dereferencing temp 2. Update temp to point at next node 3. Multiply x by 4 What is the final value of x? nullarrow_forward
- Steps to be followed: Create a class called MyThread that extends the Thread class. Declare an instance variable int limitToStop in the MyThread class. Create a parameterized constructor in the MyThread class that takes an int as a parameter to initialize a limitToStop instance variable. Override the run() method in the MyThread class. In the run() method, put a for-loop that goes from 0 to limitToStop. The block associated with the for-loop should print out only the odd numbers. Call Thread.sleep(1000) after every number you print out in the for-loop you created in the previous step. The Thread.sleep(1000) method throws an InterruptedException , which is a checked exception. Therefore, we need to enclose the Thread.sleep(1000) call in a try block. Also, add a catch block associated with the try that catches the InterruptedException and prints out the exception information using the printStackTrace() method. Create a MyThread variable using the new keyword in the main()…arrow_forwardCreate the Singly Linked List after having executed the following methods. Each item must have a headand tailreference. Whenever a method is not expected or invalid, write Exception. Only the process not the code •addHead("Dancing") •addHead("Backup") •addHead("Backup") •addTail("Backup") •addTail("Backup") •removeHead()arrow_forward2 DO NOT COPY FROM OTHER WEBSITES Correct and detailed answer will be Upvoted else downvoted. Also explain why other options are FALSE. Thank you!arrow_forward
arrow_back_ios
arrow_forward_ios
Recommended textbooks for you
- Computer Networking: A Top-Down Approach (7th Edi...Computer EngineeringISBN:9780133594140Author:James Kurose, Keith RossPublisher:PEARSONComputer Organization and Design MIPS Edition, Fi...Computer EngineeringISBN:9780124077263Author:David A. Patterson, John L. HennessyPublisher:Elsevier ScienceNetwork+ Guide to Networks (MindTap Course List)Computer EngineeringISBN:9781337569330Author:Jill West, Tamara Dean, Jean AndrewsPublisher:Cengage Learning
- Concepts of Database ManagementComputer EngineeringISBN:9781337093422Author:Joy L. Starks, Philip J. Pratt, Mary Z. LastPublisher:Cengage LearningPrelude to ProgrammingComputer EngineeringISBN:9780133750423Author:VENIT, StewartPublisher:Pearson EducationSc Business Data Communications and Networking, T...Computer EngineeringISBN:9781119368830Author:FITZGERALDPublisher:WILEY

Computer Networking: A Top-Down Approach (7th Edi...
Computer Engineering
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:PEARSON

Computer Organization and Design MIPS Edition, Fi...
Computer Engineering
ISBN:9780124077263
Author:David A. Patterson, John L. Hennessy
Publisher:Elsevier Science

Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:9781337569330
Author:Jill West, Tamara Dean, Jean Andrews
Publisher:Cengage Learning

Concepts of Database Management
Computer Engineering
ISBN:9781337093422
Author:Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:Cengage Learning

Prelude to Programming
Computer Engineering
ISBN:9780133750423
Author:VENIT, Stewart
Publisher:Pearson Education

Sc Business Data Communications and Networking, T...
Computer Engineering
ISBN:9781119368830
Author:FITZGERALD
Publisher:WILEY