কম্পিউটার টিউটোরিয়াল

সি/সি++-এ রি-এন্ট্রান্ট ফাংশন (Reentrant Function) কী?


এখানে আমরা দেখব সি বা সি++-এ রি-এন্ট্রান্ট ফাংশন (reentrant function) কী। একটি ফাংশনকে রি-এন্ট্রান্ট ফাংশন বলা হয় যদি এক্সিকিউশনের সময় সেটিকে ইন্টারাপ্ট করার ব্যবস্থা থাকে, তারপর ISR (Interrupt Service Routine) সার্ভিস করা হয়, এবং তারপর টাস্কটি রিজিউম করা হয়। এই ধরনের ফাংশন বিভিন্ন ক্ষেত্রে ব্যবহৃত হয় যেমন: রিকার্সন, হার্ডওয়্যার ইন্টারাপ্ট হ্যান্ডলিং।

একটি রি-এন্ট্রান্ট ফাংশনের কিছু প্রপার্টি থাকতে হয়। নিচে তালিকাভুক্ত:

  • এই ধরনের ফাংশন কোনো গ্লোবাল বা স্ট্যাটিক ভেরিয়েবল ব্যবহার করবে না। কোনো নিষেধাজ্ঞা নেই, তবে সাধারণত পরামর্শ দেওয়া হয় না। কারণ ইন্টারাপ্ট গ্লোবাল ভেরিয়েবলের মান পরিবর্তন করতে পারে, তাই ISR থেকে ফিরে আসার পর ফাংশনটি নতুন মান পেতে পারে, এবং ফলাফল ভিন্ন হবে।

  • রি-এন্ট্রান্ট ফাংশনকে নিজের কোড মডিফাই করা উচিত নয়। ফাংশনের অ্যাকশন কোড জুড়ে একই থাকতে হবে।

  • আরেকটি প্রপার্টি: রি-এন্ট্রান্ট ফাংশন কোনো নন-রি-এন্ট্রান্ট ফাংশন কল করবে না।

উদাহরণ: নন-রি-এন্ট্রান্ট ফাংশন

int x;
int my_function() {
    return x * 10;
}
int my_second_function() {
    return my_function() * 20;
}

এখানে এই দুটি ফাংশন নন-রি-এন্ট্রান্ট। প্রথমটি একটি গ্লোবাল ভেরিয়েবল ব্যবহার করছে, তাই নন-রি-এন্ট্রান্ট। দ্বিতীয়টি একটি নন-রি-এন্ট্রান্ট ফাংশন কল করছে, তাই এটিও নন-রি-এন্ট্রান্ট।

উদাহরণ: রি-এন্ট্রান্ট ফাংশন

int my_function(int x) {
    return x * 10;
}
int my_second_function(int x) {
    return my_function(x) * 20;
}

এখন এই দুটি ফাংশন রি-এন্ট্রান্ট ফাংশন।

  1. সি/সি++-এ ল্যাম্বডা ফাংশনের তাৎপর্য

  2. C/C++-তে ফাংশন: সম্পূর্ণ গাইড

  3. C/C++-তে putwchar() ফাংশন

  4. C/C++-তে system() ফাংশন: কম্যান্ড এক্সিকিউশন