Heim > Artikel > Backend-Entwicklung > Lineare Suche mit Multithreading in C
Hier erfahren Sie, wie Sie das Multithreading-Konzept anwenden, um nach einem Element in einem Array zu suchen. Die Methode hier ist sehr einfach. Wir werden einige Threads erstellen und dann das Array in verschiedene Teile aufteilen. Verschiedene Threads suchen in unterschiedlichen Teilen. Wenn das Element später gefunden wird, aktivieren Sie Flags, um das Element zu identifizieren.
#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</p><p>"); else printf("Key element is not present</p><p>"); }
$ gcc 1249.Thread_search.cpp -lpthread $ ./a.out Key element is found
Das obige ist der detaillierte Inhalt vonLineare Suche mit Multithreading in C. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!