Computer >> Máy Tính >  >> Lập trình >> C#

Bế tắc và chết đói trong C #

Deadlock xảy ra khi một tài nguyên bị khóa bởi một luồng và được yêu cầu bởi một luồng khác cùng một lúc. Sự cố này xảy ra thường xuyên trong một hệ thống đa xử lý.

Nó có thể xảy ra khi hai hoặc nhiều luồng chờ một tài nguyên đến luồng khác. Đây là một ví dụ -

Chủ đề một Chủ đề Hai
Mất khóa P Mất khóa Q
Khóa yêu cầu Q Khóa yêu cầu P

Luồng Một sẽ không nhận được Khóa Q vì nó thuộc về Luồng Hai. Theo cách tương tự, Luồng hai sẽ không nhận được Khóa P vì chủ sở hữu ban đầu của nó là Luồng một.

Bế tắc cũng có thể là một bế tắc ba chiều xảy ra nếu ba luồng và ba khóa là chung. Theo cách tương tự, nó có thể xảy ra đối với các trường hợp bế tắc bốn chiều, năm chiều và các trường hợp bế tắc khác.

Đói là chặn vĩnh viễn một hoặc nhiều chuỗi có thể chạy được trong một ứng dụng đa luồng.