Computer >> Máy Tính >  >> Lập trình >> lập trình C

Tìm kiếm tuyến tính sử dụng Đa luồng trong C

Ở đây chúng ta sẽ thấy cách áp dụng khái niệm đa luồng để tìm kiếm một phần tử trong một mảng. Đây là cách tiếp cận rất đơn giản. Chúng ta sẽ tạo một số luồng, sau đó chia mảng thành các phần khác nhau. Chủ đề khác nhau sẽ tìm kiếm trong các phần khác nhau. Sau đó, khi phần tử được tìm thấy, hãy bật cờ để xác định phần tử này.

Ví dụ

#include <stdio.h>
#include <pthread.h>
#define MAX 16
#define THREAD_MAX 4
int array[MAX] = { 1, 5, 7, 10, 12, 14, 15, 18, 20, 22, 25, 27, 30, 64, 110, 220 };
int key = 18;
int flag = 0; //flag to indicate that item is found in the array or not
int current_thread = 0;
void* ThreadSearch(void* args) { //This is linear search function. It will be running using all threads
   int num = current_thread++;
   for (int i = num * (MAX / 4); i < ((num + 1) * (MAX / 4)); i++){
      if (array[i] == key)
         flag = 1; //set flag if key is found
   }
}
int main() {
   pthread_t thread[THREAD_MAX];
   for (int i = 0; i < THREAD_MAX; i++) { //create multiple threads
      pthread_create(&thread[i], NULL, ThreadSearch, (void*)NULL);
   }
   for (int i = 0; i < THREAD_MAX; i++) {
      pthread_join(thread[i], NULL); //wait untill all of the threads are completed
   }
   if (flag == 1)
      printf("Key element is found\n");
   else
      printf("Key element is not present\n");
}

Đầu ra

$ gcc 1249.Thread_search.cpp -lpthread
$ ./a.out
Key element is found