TechBord Logo
TechBord detail

بن بست (Deadlock) چیست؟

بن بست وضعیتی است که در آن برنامه (Program) نمی تواند به منبعی که برای ادامه نیاز دارد دسترسی پیدا کند. هنگامی که یک برنامه کاربردی (Application) فعال به بن بست می رسد، ممکن است "هنگ کند" یا پاسخگو نباشد.

منابعی مانند ذخیره شده یا ذخیره شده داده (Data) ممکن است در هنگام دسترسی قفل شوند. توسط یک روند (Process) خاص در یک برنامه. قفل کردن داده ها از بازنویسی زودهنگام داده ها توسط سایر فرآیندها جلوگیری می کند. اگر یک فرآیند یا پرس و جو (Query) نیاز به دسترسی به داده‌های قفل شده داشته باشد، اما فرآیند قفل کردن داده‌ها آن را رها نمی‌کند، ممکن است یک بن‌بست رخ دهد.

به عنوان مثال، وضعیت زیر باعث می‌شود. بن بست بین دو فرآیند:

  • فرآیند 1 منبع B را از فرآیند 2 درخواست می کند.
  • منبع B در حین اجرای فرآیند 2 قفل می شود.
  • فرایند 2 برای پایان اجرا به منبع A از فرآیند 1 نیاز دارد.
  • در حین اجرای فرآیند 1 منبع A قفل می شود.

نتیجه این است که فرآیند 1 و فرآیند 2 در انتظار هستند. تا همدیگر تمام شود از آنجایی که هیچ یک از فرآیندها نمی تواند تا زمانی که دیگری کامل شود ادامه یابد، یک بن بست ایجاد می شود.

اجتناب از بن بست ها

توسعه دهنده (Developer) می تواند با اجتناب از شرایط قفل در منطق برنامه نویسی خود، از بن بست ها جلوگیری کند. . به عنوان مثال، به جای اینکه دو فرآیند به یکدیگر متکی باشند، کد منبع (Source Code) را می توان طوری نوشت که هر نخ (Thread) قبل از اینکه رشته دیگری به منابع خود نیاز داشته باشد به پایان برسد. با حصول اطمینان از دسترسی به داده ها در صورت نیاز، برنامه نویسان می توانند برنامه کاربردی (Application) خود را از هنگ شدن یا خراب شدن محافظت کنند.

توجه: زمانی که دو یا چند پرس و جو در یک پایگاه داده (Database)

تعریف اصطلاح بن بست (Deadlock) توسط تک بورد

تعریف بن بست (Deadlock) در این صفحه یک تعریف پایه نگاشته شده توسط تک بورد است. اگر مایل به ارجاع به این صفحه یا استناد به این تعریف هستید، با شرط درج لینک به این صفحه می توانید از این محتوا استفاده کنید.

هدف تک بورد توضیح اصطلاحات کامپیوتری به روشی است که به راحتی قابل درک باشد. ما برای سادگی و دقت با هر تعریفی که منتشر می کنیم تلاش می کنیم. اگر بازخوردی درباره تعریف بن بست (Deadlock) دارید یا می‌خواهید یک اصطلاح فنی جدید پیشنهاد کنید، لطفاً با ما تماس بگیرید.

آیا می خواهید اصطلاحات فنی بیشتری یاد بگیرید؟ در خبرنامه روزانه یا هفتگی مشترک شوید و شرایط و آزمون های ویژه را در ایمیل خود تحویل بگیرید.