বিঘ্নিত রুটিন ডেটা একটি বাফারে সঞ্চয় করে (পুট এবং পয়েন্টার সহ একটি বিজ্ঞপ্তি বাফার দুর্দান্তভাবে কাজ করে)। বাফারে ডেটা আছে কি নেই তা দেখার জন্য প্রধান লুপটি পরীক্ষা করে এবং এটি উপস্থিত থাকে out প্রধান লুপটি অন্যান্য কাজ করতে পারে তবে বাধা বাফার ওভারফ্লো হওয়ার আগে (যখন পুটটি গেটটি মিলবে) এর আগে ডেটা পরীক্ষা করে মুছে ফেলা দরকার।
এটি সংকলন করবে না তবে এটি পদ্ধতিটি চিত্রিত করে।
char circ_buf[BUFFER_SIZE];
int get_index, put_index;
void initialize(void) {
get_index = 0;
put_index = 0;
}
isr serial_port_interrupt(void) { // interrupt
circ_buf[put_index++] = SERIAL_PORT_REGISTER;
if(put_index==get_index) error("buffer overflow"); // oops
if(put_index==BUFFER_SIZE) put_index = 0; // circular buffer
}
void background routine(void) {
while(put_index!=get_index) { // or if()
ch = circ_buf[get_index++];
// do something with ch
if(get_index==BUFFER_SIZE) get_index = 0;
}
}