Convert this C++ program into C     #include   #include      // size of array  #define MAX 100    // maximum number of threads  #define MAX_THREAD 4     using namespace std;     int a[] = { 1, 5, 7, 10, 12, 14, 15, 18, 20, 22, 25, 27, 30, 64, 110, 220 };  int sum[4] = { 0 };  int part = 0;     void* sum_array(void* arg)  {         // Each thread computes sum of 1/4th of array      int thread_part = part++;         for (int i = thread_part * (MAX / 4); i < (thread_part + 1) * (MAX / 4); i++)          sum[thread_part] += a[i];  }     int main()  {         pthread_t threads[MAX_THREAD];         // Creating 4 threads      for (int i = 0; i < MAX_THREAD; i++)         pthread_create(&threads[i], NULL, sum_array, (void*)NULL);        // joining 4 threads i.e. waiting for all 4 threads to complete      for (int i = 0; i < MAX_THREAD; i++)         pthread_join(threads[i], NULL);        // adding sum of all 4 parts      int total_sum = 0;     for (int i = 0; i < MAX_THREAD; i++)          total_sum += sum[i];        cout << "sum is " << total_sum << endl;         return 0; }

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

Convert this C++ program into C

 

 

#include <iostream> 
#include <pthread.h> 
  
// size of array 
#define MAX 100
  
// maximum number of threads 
#define MAX_THREAD 4 
  
using namespace std; 
  
int a[] = { 1, 5, 7, 10, 12, 14, 15, 18, 20, 22, 25, 27, 30, 64, 110, 220 }; 
int sum[4] = { 0 }; 
int part = 0; 
  
void* sum_array(void* arg) 

  
    // Each thread computes sum of 1/4th of array 
    int thread_part = part++; 
  
    for (int i = thread_part * (MAX / 4); i < (thread_part + 1) * (MAX / 4); i++) 
        sum[thread_part] += a[i]; 

  
int main() 

  
    pthread_t threads[MAX_THREAD]; 
  
    // Creating 4 threads 
    for (int i = 0; i < MAX_THREAD; i++)
        pthread_create(&threads[i], NULL, sum_array, (void*)NULL);
  
    // joining 4 threads i.e. waiting for all 4 threads to complete 
    for (int i = 0; i < MAX_THREAD; i++)
        pthread_join(threads[i], NULL);
  
    // adding sum of all 4 parts 
    int total_sum = 0;
    for (int i = 0; i < MAX_THREAD; i++) 
        total_sum += sum[i];
  
    cout << "sum is " << total_sum << endl; 
  
    return 0;

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 4 steps with 2 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