Maximum element in a very large array using pthreads

Given a very large array of integers, find maximum within the array using multithreading.

Examples:

Input :  1, 5, 7, 10, 12, 14, 15, 18, 20, 
         22, 25, 27, 30, 64, 110, 220
Output :Maximum Element is : 220

Input :  10, 50, 70, 100, 120, 140, 150, 180, 
         200, 220, 250, 270, 300, 640, 110, 220
Output : Maximum Element is : 640

Prerequisite : Multithreading

Note : Useful in large files of size MB/GB.

How to run :
It can only be run on linux envirenment.
command :

>> gcc -pthread maximum.c 
>> ./a.out
filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ code to find maximum of an array using Multithreading
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
  
// Size of array
#define max 16
  
// Max number of thread
#define Th_max 4
  
// Array
int a[max] = { 1, 5, 7, 10, 12, 14, 15, 18, 20,
               22, 25, 27, 300, 64, 110, 220 };
  
// Array to store max of threads
int max_num[Th_max] = { 0 };
int thread_no = 0;
  
// Function to find maximum
void maximum(void* arg)
{
    int i, num = thread_no++;
    int maxs = 0;
  
    for (i = num * (max / 4); i < (num + 1) * (max / 4); i++) {
        if (a[i] > maxs)
            maxs = a[i];
    }
  
    max_num[num] = maxs;
}
  
// Driver code
int main()
{
    int maxs = 0;
    int i;
    pthread_t threads[Th_max];
  
    // creating 4 threads
    for (i = 0; i < Th_max; i++)
        pthread_create(&threads[i], NULL,
                       maximum, (void*)NULL);
  
    // joining 4 threads i.e. waiting for
    // all 4 threads to complete
    for (i = 0; i < Th_max; i++)
        pthread_join(threads[i], NULL);
  
    // Finding max element in an array
    // by individual threads
    for (i = 0; i < Th_max; i++) {
        if (max_num[i] > maxs)
            maxs = max_num[i];
    }
  
    printf("Maximum Element is : %d", maxs);
  
    return 0;
}

chevron_right


Output:

Maximum Element is : 300


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : nidhi_biet