ভূমিকা
বাইনারি সার্চ একটি দক্ষ সার্চিং অ্যালগরিদম যা সর্টেড অ্যারেতে কাজ করে। মাল্টিথ্রেডিং এনভায়রনমেন্টে এটির পারালлеল ভার্সন বানানো যায়, যেখানে প্রতিটি থ্রেড অ্যারের একটি অংশে সার্চ করে। CPU কোরের সংখ্যা অনুযায়ী থ্রেড তৈরি করা হয়।
C++ প্রোগ্রাম উদাহরণ
#include#include #define MAX 16 #define MAX_THREAD 4 using namespace std; int arr[] = {1,6,8,11,13,14,15,19,21,23,26,28,31,65,108,220}; int key = 31; bool found = false; int part = 0; void* binary_search(void* arg) { int thread_part = part++; int start = thread_part * (MAX / 4); int end = (thread_part + 1) * (MAX / 4); while (start < end && !found) { int mid = (end - start) / 2 + start; if (arr[mid] == key) { found = true; break; } else if (arr[mid] > key) end = mid - 1; else start = mid + 1; } return NULL; } int main() { pthread_t threads[MAX_THREAD]; for (int i = 0; i < MAX_THREAD; i++) pthread_create(&threads[i], NULL, binary_search, NULL); for (int i = 0; i < MAX_THREAD; i++) pthread_join(threads[i], NULL); if (found) cout << key << " found in array" << endl; else cout << key << " not found in array" << endl; return 0; }
আউটপুট
31 found in array