Nói chung, deadlock có nghĩa là hai hoặc nhiều thực thể đang chặn một số nguồn và không ai trong số chúng có thể hoàn thành vì chúng đang chặn các nguồn theo cách tuần hoàn.
Một ví dụ:Giả sử tôi có bảng A và bảng B, tôi cần thực hiện một số cập nhật trong A và sau đó là B và tôi quyết định khóa cả hai chúng tại thời điểm sử dụng (đây thực sự là hành vi ngu ngốc, nhưng nó phục vụ mục đích của nó ngay bây giờ. ). Cùng lúc đó, người khác làm điều tương tự theo thứ tự ngược lại - khóa B trước, sau đó khóa A.
Theo thứ tự thời gian, điều này xảy ra:
proc1:Khóa A
proc2:Khóa B
proc1:Khóa B - bắt đầu đợi cho đến khi proc2 phát hành B
proc2:Khóa A - bắt đầu đợi cho đến khi proc1 phát hành A
Không ai trong số họ sẽ bao giờ hoàn thành. Thật là bế tắc. Trong thực tế, điều này thường dẫn đến lỗi thời gian chờ vì không mong muốn có bất kỳ truy vấn nào bị treo vĩnh viễn và hệ thống cơ bản (ví dụ:cơ sở dữ liệu) sẽ giết các truy vấn không kết thúc kịp thời.
Một ví dụ thực tế về tình trạng bế tắc là khi bạn khóa chìa khóa nhà trong ô tô và chìa khóa ô tô trong nhà.