Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C에서 멀티스레딩을 사용한 선형 검색

<시간/>

여기에서는 배열의 한 요소를 검색하기 위해 다중 스레딩 개념을 적용하는 방법을 살펴보겠습니다. 여기서 접근 방식은 매우 간단합니다. 스레드를 생성한 다음 배열을 여러 부분으로 나눕니다. 다른 스레드는 다른 부분에서 검색합니다. 그런 다음 요소가 발견되면 플래그를 활성화하여 이를 식별합니다.

예시

#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");
}

출력

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