Rumah > pembangunan bahagian belakang > C++ > Carian linear menggunakan multithreading dalam C

Carian linear menggunakan multithreading dalam C

WBOY
Lepaskan: 2023-09-06 17:13:06
ke hadapan
905 orang telah melayarinya

Carian linear menggunakan multithreading dalam C

Di sini kita akan melihat cara menggunakan konsep multi-threading untuk mencari elemen dalam tatasusunan. Kaedah di sini sangat mudah. Kami akan mencipta beberapa utas dan kemudian membahagikan tatasusunan kepada bahagian yang berbeza. Benang yang berbeza akan mencari di bahagian yang berbeza. Kemudian, apabila elemen ditemui, dayakan bendera untuk mengenal pasti elemen tersebut.

Contoh

#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>");
}
Salin selepas log masuk

Output

$ gcc 1249.Thread_search.cpp -lpthread
$ ./a.out
Key element is found
Salin selepas log masuk

Atas ialah kandungan terperinci Carian linear menggunakan multithreading dalam C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan