এখানে আমরা দেখব সি++-এ volatile কোয়ালিফায়ারর অর্থ কী। volatile কোয়ালিফায়ারটি একটি ভেরিয়েবল ডিক্লেয়ার করার সময় लगিয়ে দেয়া হয়। এটি কম্পাইলারকে বলে যে, মানটি যেকোনো মুহূর্তে পরিবর্তন হতে পারে। volatile-এর কিছু বৈশিষ্ট্য:
volatileকীওয়ার্ড মেমরি অ্যাসাইনমেন্ট সরিয়ে দিতে পারে না।- এটি ভেরিয়েবলগুলোকে রেজিস্টারে ক্যাশ করতে পারে না।
- মানটি অ্যাসাইনমেন্টের ক্রমে পরিবর্তন করতে পারে না।
চলুন দেখি volatile কীওয়ার্ড কীভাবে ব্যবহার করা যায়।
volatile int a; int volatile a;
এই দুটি ডিক্লেরেশনই সঠিক। অন্যান্য ডেটা টাইপের মতো, আমরা volatile পয়েন্টার, স্ট্রাকচার, ইউনিয়ন ইত্যাদি ব্যবহার করতে পারি। volatile স্ট্রাকচার এবং ইউনিয়ন নিজে volatile হতে পারে, এবং তাদের মেম্বার ভেরিয়েবলও volatile টাইপের হতে পারে।
volatile বিভিন্ন জায়গায় ব্যবহৃত হয়। মেমরি ম্যাপড পেরিফেরাল রেজিস্টার, কিছু গ্লোবাল ভেরিয়েবল যা অন্য ফাংশন বা ইন্টারাপ্ট সার্ভিস রুটিন দ্বারা অ্যাক্সেস করা হয়, অথবা কিছু মাল্টি-থ্রেডেড অ্যাপ্লিকেশনে volatile ব্যবহার করা হয়।
উদাহরণ
int main() {
int value;
value++;
}
int main() {
volatile int value;
value++;
}
এখানে দুটি কোড ব্লক আছে। প্রথম ব্লকে volatile কীওয়ার্ড নেই। তাই প্রথম কেসে, ভেরিয়েবলটি মেমরি থেকে সিপিইউ রেজিস্টারে কপি হবে, তারপর অপারেশনগুলো হবে। দ্বিতীয় কেসে volatile আছে। তাই এই কেসে ভেরিয়েবলটি মেমরি থেকে রেজিস্টারে কপি হবে না।