بازخوانی (برنامهنویسی رایانه)
بازخوانی در برنامهنویسی رایانه بخشی از برنامهای اجرایی است که به بخش دیگری از برنامه به دیسهی پارامون فرستاده میشود و در زمانی درخور بازخوانده میشود. در این جا بازخوانی همان فراخواندن است و پارامون در بسیاری از زبانهای برنامهنویسی نام یک زیربرنامه است. بازخوانی بسته به آن که چه زمانی اجرا شود؛ به دو گونه دستهبندی میشود: بازخوانی همگام و بازخوانی ناهمگام. بازخوانی همگام فراخوانیای بیدرنگ است و بازخوانی ناهمگام با درنگ.
بازخوانی در زبانهای برنامهنویسی در دیسههای گوناگونی همچون رویهها، عبارتهای لامبدا، بندها یا اشارهگر به زیربرنامه پیادهسازی میشود.
گونههای بازخوانی
بازخوانیها بسته به زمان اجرا به دو گونه دستهبندی میشوند: همگام (بندآور [1]) و ناهمگام (بازداشته [2]). در بازخوانی همگام، فراخوانی بیدرنگ انجام میشود. به سخنی دیگر، این بازخوانی برنامه را تا پایان یافتن فراخوانی بند میآورد. از این روی به بازخوانی همگام، بندآور نیز گفته میشود. در بازخوانی ناهمگام، فراخوانی با اندکی درنگ انجام میشود. چون بازخوانی بازداشته شدهاست بدان بازخوانی بازداشته نیز گفته میشود.
بازخوانیهای ناهمگام بیشتر در زمینهی آپارشهای [3] دروندادی و بروندادی (Input/output operations) و رسیدگی به رویداد (event handling) به کار میروند. همچنین وقفهها و ریسهها در برنامههای چند ریسمانی از بازخوانیهای ناهمگام بسیار بهره میجویند. بازخوانیهای همگام چون بدون وقفهاند، در همگامسازی برنامههایی چندریسمانی کاربردی ندارند.
بازخوانیها کاربرد ویژهای در واسطهای نگاریک کاربر دارند. در این برنامههای کاربردی، برنامه بازبُردی (reference) به زیربرنامهای دلخواه را به سامانهی عامل میفرستد. سامانهی عامل نیز زیربرنامه را در پاسخ به رویدادهایی مانند کلیکهای موشواره یا فشار کلیدها فرامیخواند. چون سامانهی عامل این دست فراخوانیها را انجام میدهد، نگرانیهایی در زمینههای امنیتی و مدیریتی فَردارهها (privilages) پدید میآیند: گرچه سامانهی عامل زیربرنامهای را فرامیخواند، زیربرنامه نباید با فردارههای یکسان با فراخوانندهاش (سامانهی عامل) اجرا شود. حلقههای امنیتی چارهایاند برای این دست نگرانیها.