Максимальный элемент в очень большом массиве с использованием pthreads

Опубликовано: 17 Января, 2022

Учитывая очень большой массив целых чисел, найдите максимум в массиве, используя многопоточность.

Примеры:

Ввод: 1, 5, 7, 10, 12, 14, 15, 18, 20, 
         22, 25, 27, 30, 64, 110, 220
Вывод: Максимальное количество элементов: 220

Ввод: 10, 50, 70, 100, 120, 140, 150, 180, 
         200, 220, 250, 270, 300, 640, 110, 220
Вывод: Максимальное количество элементов: 640

Предпосылка: многопоточность

Примечание: полезно для больших файлов размером МБ / ГБ.

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

>> gcc -pthread maximum.c 
>> ./a.out
// 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;
}

Выход:

Максимальный элемент: 300

Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .

Если вы хотите посещать живые занятия с отраслевыми экспертами, пожалуйста, обращайтесь к Geeks Classes Live и Geeks Classes Live USA.

C