کنترل همروندی

کنترل همروندی در علوم رایانه به خصوص در مبحث برنامه‌نویسی (برنامه‌نویسی همروند، برنامه‌نویسی موازی)، سیستم‌عامل (رایانش موازی)، چندپردازها و پایگاه داده تضمین می‌کند که دستورهای همروند منجر به نتایج درست شوند و روش‌هایی که با به‌کارگیری آن‌ها این نتایج درست را در کوتاه‌ترین زمان ممکن به‌دست‌آورد.
کنترل همروندی خوشبینانه
کنترل همروندی خوشبینانه از سه مرحله تشکیل شده است.
۱. خواندن
فرض کنید که فردی در خانه نشسته است و می‌خواهد یک صفحه از ویکی‌پدیا را ویرایش کند. فرد مزبور ابتدا بر دکمه ویرایش می‌فشارد و تغییرات مورد نظر خود را انجام می‌دهد. این تغییرات در کاشه رایانه قرار دارد. سپس با فشردن دکمه «ذخیره شود» متن ویرایش به سرور ویکی‌پدیا فرستاده می‌شود.
۲. تایید
در سرور نرم‌افزار مدیاویکی بررسی می‌کند که آیا ویرایش شما با ویرایش دیگران درگیری دارد یا نه. اگر درگیری وجود داشت الگوریتمی مورد استفاده قرار می‌گیرد تا درگیری را برطرف سازد. یک راه برای رفع درگیری این است که ویرایش نخست در پایگاه داده ذخیره شود و ویرایش‌های درگیر دیگر با فرستادن پیامی برای کاربران موردنظر نادیده انگاشته شود. راه دیگر این است که آن بخش‌هایی از ویرایش کاربران دیگر که درگیری ندارند نیز ذخیره شوند.
۳. نوشتن
اگر درگیری وجود نداشت تراکنش انجام می‌شود.
نمونه این نوع کنترل نرم‌افزار مدیاویکی است. الگوریتم کنترل آن در این‌جا توصیف شده است. نمونه دیگر باگزیلا است ( ).
کنترل همروندی بدبینانه
در این روش به وسیله قفل گذاری جلوی هرگونه همروندی گرفته می‌شود. تا زمانیکه یک دستور درحال اجراست جلوی اجرای دستورهایی که ممکن است مانع اجرای صحیح دستور نخست شوند گرفته می‌شود.
پروتوکل‌ها
۱. قفل‌گذاری
قفل‌گذاری روش بدبینانه کنترل همروندی است. بقیه روش‌ها خوشبینانه هستند. قفل امتیاز دستیابی به یک واحد داده است که توسط سیستم قفل گذاری به یک تراکنش داده می‌شود یا از او پس گرفته می‌شود.
مدیر قفل ممکن است قفل‌ها را به طور پویا یا ایستا در اختیار تراکنش‌ها قرار دهد. در حالت پویا، مدیر قفل، پیرو درخواست تراکنش اقدام می‌کند. این روش قفل‌گذاری پویا موسوم است. در حالت قفل‌گذاری ایستا، تمام قفل‌های لازم برای اجرای یک تراکنش، پیش از اجرا، درخواست می‌شود و لازمه این روش این است که مجموعه قفل‌های مورد نیاز تراکنش، از قبل شناخته شده باشند.
روش‌های قفل‌گذاری
قفل انحصاری Exclusive Lock
اگر تراکنش T قفل انحصاری را برروی یک Object قرار دهد هیچ‌کدام از تراکنش‌های دیگرمانند t’ نمی‌توانند هیچ قفلی را برروی آن قرار دهند تا زمانی که Tقفلش را آزاد کند.
قفل اشتراکی Shared Lock
اگر تراکنشT قفل اشتراکی برروی Objectقرار دهد آن وقت تراکنش‌های دیگر مانند
۲. برچسب زمانی
۳. تعیین اعتبار
۴. دانه‌بندی چندگانه
اجازه می‌دهد که عناصر داده اندازه‌های متفاوت داشته باشند و یک سلسله مراتب از دانه بندی داده‌ها را تعریف می‌کند، که در ان عناصر کوچکتر در عناصر بزرگتر قرار گرفته‌اند.
می‌تواند از نظر گرافیکی مانند یک درخت نشان داده شود.
هنگامی که یک تراکنش یک نود را بصورت صریح قفل می‌کند، تمام نودهای زیر آنرا بصورت ضمنی قفل کرده است.
علاوه بر قفل انحصاری و اشتراکی سه نوع قفل دیگر هم در دانه بندی چند گانه وچود دارند .(
Intention-shared(IS. نشان می‌دهد که در سطوح پایین‌تر قفل اشتراکی به صورت صریح انجام شده است.
Intention-exclusive. نشان می‌دهد که در سطوح پایین‌تر قفل اشتراکی یا انحصاری به صورت صریح انجام شده است.
Shared and Intention exclusive. زیردرخت با ریشه نود بصورت صریح در مد اشتراکی قفل شده است وقفل صریح در سطوح پایین‌تر در مد صریح رخ داده است
قفل‌های intention به نود اجازه می‌دهند که در مد انحصاری یا اشتراکی بدون نیاز به چک تمام زیر درخت زیر آن قفل شوند.
۵. نسخه‌سازی
مسئله بن‌بست
کابردها
کنترل همروندی در پایگاه‌های داده
کنترل همروندی در سیستم‌های عامل
در سیستم‌های عامل معمولا چند وظیفه همزمان انجام می‌شوند. اگر این وظایف مستقل از هم باشند اجرای آن‌ها ساده است اما درصورتی‌که درگیر باشند، مثلا نوشتن همروند بر روی یک فایل، در این صورت برای انجام درست وظایف نیاز به کنترل همروندی است وگرنه ممکن است منجر به نتایج ناخواسته شوند.