কিভাবে C++ এ মাল্টিথ্রেডিং ব্যবহার করবেন

Kibhabe C E Maltithredim Byabahara Karabena



মাল্টিথ্রেডিং একক প্রোগ্রামের মধ্যে এক্সিকিউশনের একাধিক থ্রেড চালানোর ধারণা। এটি C++ এর মতো প্রোগ্রামিং ভাষাতে একটি খুব দরকারী বৈশিষ্ট্য কারণ এটি আমাদের একসাথে একাধিক অপারেশন করতে সক্ষম করে। C++ এ, মাল্টিথ্রেডিং মাধ্যমে অর্জন করা যেতে পারে <থ্রেড> লাইব্রেরি, যা ক্লাস এবং ফাংশনগুলির একটি সেট সরবরাহ করে যা বিকাশকারীদের একাধিক থ্রেড তৈরি, পরিচালনা এবং নিয়ন্ত্রণ করতে দেয়।

মাল্টিথ্রেডিং শুধু মাল্টিটাস্কিং মত. এর মানে হল দুই বা ততোধিক থ্রেড একই সাথে চলছে। এই জাতীয় প্রোগ্রামে, প্রতিটি উপাদানকে একটি থ্রেড হিসাবে উল্লেখ করা হয় এবং প্রতিটি থ্রেড কার্যকর করার একটি অনন্য পথ নির্দিষ্ট করে। জন্য কোন অন্তর্নির্মিত সমর্থন নেই মাল্টিথ্রেডেড C++ 11 এর পূর্বের প্রোগ্রাম। এই বৈশিষ্ট্যটি সম্পূর্ণরূপে অপারেটিং সিস্টেম দ্বারা প্রদান করা হয়।







মাল্টিথ্রেডিং একটি প্রোগ্রামকে ছোট থ্রেডে ভাগ করা হিসাবেও উল্লেখ করা যেতে পারে যা একই সাথে কার্যকর হয়। থ্রেড ক্লাস, যার জন্য ব্যবহৃত হয় মাল্টিথ্রেডিং C++ এ, আপনাকে অসংখ্য থ্রেড তৈরি করতে এবং তাদের সম্পাদন পরিচালনা করতে সক্ষম করে।



C++ এ থ্রেড তৈরি করুন

C++ এ একটি থ্রেড তৈরি করতে আমরা ব্যবহার করি std::থ্রেড ক্লাস, যা অন্তর্নির্মিত থ্রেড লাইব্রেরিতে অন্তর্ভুক্ত। ক কলযোগ্য ক্লাসের একটি অবজেক্টের কনস্ট্রাক্টরের কাছে একটি যুক্তি হিসাবে সরবরাহ করা হয় std::থ্রেড একটি নতুন থ্রেড তৈরি করার জন্য। একটি থ্রেড সক্রিয় থাকাকালীন কার্যকর করা হয় যে কোড হিসাবে পরিচিত হয় কলযোগ্য . যখন আমরা একটি নির্মাণ std::থ্রেড অবজেক্ট, একটি নতুন থ্রেড প্রতিষ্ঠিত হয়, যা দ্বারা সরবরাহ করা কোডের কারণ হয় কলযোগ্য চালানো কলযোগ্য এই তিনটি পদ্ধতি ব্যবহার করে সংজ্ঞায়িত করা যেতে পারে।



পদ্ধতি 1: ফাংশন পয়েন্টার

কলযোগ্য একটি ফাংশন পয়েন্টার ব্যবহার করে ফাংশন এভাবে সংজ্ঞায়িত করা যেতে পারে।





void function_call ( পরামিতি )

যখন ফাংশনটি তৈরি করা হয়, ফাংশন ধারণকারী একটি থ্রেড অবজেক্ট নিম্নরূপ তৈরি হয়:



std::thread thread_obj ( ফাংশন_কল, প্যারামিটার ) ;

পদ্ধতি 2: ফাংশন অবজেক্ট

ফাংশন অবজেক্ট ব্যবহার করার সময়, আমরা অপারেটর ওভারলোডিং ধারণার সুবিধা তৈরি করি। থ্রেড তৈরি হওয়ার সময় যে কোডটি চালাতে হবে সেটি ওভারলোড ফাংশনে থাকে।

ক্লাস অবজেক্ট_ক্লাস {
অকার্যকর অপারেটর ( ) ( পরামিতি )
{
// কোড চালানো হবে
}
} ;
std::thread thread_object ( অবজেক্ট_ক্লাস ( ) , পরামিতি )

পদ্ধতি 3: ল্যাম্বডা এক্সপ্রেশন

কলযোগ্য একটি ল্যাম্বডা এক্সপ্রেশন ব্যবহার করে ফাংশন এভাবে সংজ্ঞায়িত করা যেতে পারে।

auto f = [ ] ( পরামিতি ) {
// কোড চালানো হবে
} ;
std::thread thread_object ( f, পরামিতি ) ;

C++ এ মাল্টিথ্রেডিংয়ের উদাহরণ

# অন্তর্ভুক্ত করুন
# অন্তর্ভুক্ত <থ্রেড>
নামস্থান std ব্যবহার করে;

void func_thread ( int N )
{
জন্য ( int i = 0 ; i < এন; i++ ) {
cout << 'থ্রেড 1 :: কলযোগ্য => একটি ফাংশন পয়েন্টার ব্যবহার করে \n ' ;
}
}

class thread_obj {
সর্বজনীন:
অকার্যকর অপারেটর ( ) ( int n ) {
জন্য ( int i = 0 ; i < n; i++ )
cout << 'থ্রেড 2 :: কলযোগ্য => একটি ফাংশন অবজেক্ট ব্যবহার করা \n ' ;
}
} ;

int প্রধান ( )
{

auto f = [ ] ( int n ) {
জন্য ( int i = 0 ; i < n; i++ )
cout << 'থ্রেড 3 :: কলযোগ্য => ল্যাম্বডা এক্সপ্রেশন ব্যবহার করে \n ' ;
} ;

থ্রেড th1 ( func_thread, 2 ) ;

থ্রেড th2 ( thread_obj ( ) , 2 ) ;

থ্রেড th3 ( চ, 2 ) ;

th1.join ( ) ;

th2.join ( ) ;

th3.যোগ দিন ( ) ;

প্রত্যাবর্তন 0 ;
}

উপরের কোডে, আমরা তিনটি আলাদা সহ তিনটি থ্রেড তৈরি করেছি কলযোগ্য —একটি ফাংশন পয়েন্টার, একটি অবজেক্ট এবং একটি ল্যাম্বডা এক্সপ্রেশন। প্রতিটি থ্রেড দুটি পৃথক দৃষ্টান্ত হিসাবে শুরু হয়। আউটপুটে নির্দেশিত হিসাবে তিনটি থ্রেড একযোগে এবং পৃথকভাবে সক্রিয়।

আউটপুট

মাল্টিথ্রেডিং এর সুবিধা এবং অসুবিধা

আরও কাজ দ্রুত করা যেতে পারে ধন্যবাদ মাল্টিথ্রেডিং . কারণ এটি অসংখ্য থ্রেডকে একসাথে বিভিন্ন কাজ করতে দেয়। মাল্টিথ্রেডিং প্রোগ্রামারদের নেটওয়ার্ক ক্রিয়াকলাপ করতে, ফটো বা ভিডিওগুলি প্রক্রিয়া করতে এবং অ্যাপ্লিকেশনের বাকি অংশকে ধীর না করে জটিল গণনা করতে দেয়। মাল্টিথ্রেডিং ব্যবহারকারী ইন্টারফেস আরো প্রতিক্রিয়াশীল করতে সাহায্য করে. একটি পৃথক থ্রেডে স্ক্রিন পরিবর্তন করে এমন কোডটি চালানোর মাধ্যমে, UI থ্রেডটি ব্যবহারকারীর ইনপুটকে সাড়া দেওয়ার মতো অন্যান্য কাজগুলি চালানোর জন্য বিনামূল্যে রাখা হয়। এর ফলে ইউজার ইন্টারফেস মসৃণ এবং দ্রুততর হয়।

যাইহোক, ব্যবহারের কিছু সীমাবদ্ধতা আছে মাল্টিথ্রেডিং . সঙ্গে কাজ করার সময় প্রধান চ্যালেঞ্জ এক মাল্টিথ্রেডেড প্রোগ্রাম জাতি শর্ত এড়ানো হয়. একটি রেস কন্ডিশন হল এমন একটি পরিস্থিতি যেখানে দুই বা ততোধিক থ্রেড একই সময়ে একই শেয়ার্ড রিসোর্স অ্যাক্সেস করার চেষ্টা করছে, যা অপ্রত্যাশিত আচরণের দিকে পরিচালিত করে। রেসের অবস্থা এড়াতে, বিকাশকারীরা মিউটেক্স, সেমাফোরস এবং বাধাগুলির মতো সিঙ্ক্রোনাইজেশন কৌশল ব্যবহার করে।

উপসংহার

মাল্টিথ্রেডিং C++-এ একটি শক্তিশালী ধারণা যা ডেভেলপারদের এমন প্রোগ্রাম তৈরি করতে দেয় যা একসঙ্গে একাধিক কাজ সম্পাদন করতে পারে। লাইব্রেরি দ্বারা প্রদত্ত থ্রেড ক্লাস ব্যবহার করে, বিকাশকারীরা একাধিক থ্রেড তৈরি, পরিচালনা এবং নিয়ন্ত্রণ করতে পারে। মাল্টিথ্রেডিং কর্মক্ষমতা উন্নত করতে, প্রতিক্রিয়াশীলতা বাড়াতে এবং সিস্টেমের সম্পদের সীমাবদ্ধতা কাটিয়ে উঠতে ব্যবহার করা যেতে পারে। তবে চ্যালেঞ্জের কারণে কাজ করতে গিয়ে ড মাল্টিথ্রেডেড প্রোগ্রাম, ডেভেলপারদের সতর্কতা অবলম্বন করতে হবে এবং রেসের অবস্থা এড়াতে উপযুক্ত সিঙ্ক্রোনাইজেশন কৌশল ব্যবহার করতে হবে।