Ожидание события, которое никогда не вызовет тупик? - PullRequest
1 голос
/ 17 декабря 2009

Обычно взаимоблокировка означает, что поток (или процесс) A ожидает поток B, и в то же время поток B ожидает поток A.

В настоящее время я столкнулся с похожей ситуацией в нашем приложении. Поток A ожидает события, которое будет установлено потоком B. Однако поток B не ожидает потока A, он просто не будет устанавливать событие (независимо от того, по какой причине). Мне интересно, можно ли эту ситуацию также назвать «тупиком», или для этого есть другой термин?

Ответы [ 5 ]

5 голосов
/ 17 декабря 2009

Я бы назвал это ошибкой или плохим дизайном. Но это не тупик, если один поток все еще работает.

4 голосов
/ 17 декабря 2009

Строго говоря, нет, это не тупик, как вы и сказали изначально (за исключением того, что в целом может существовать целый цикл потоков, каждый из которых ожидает блокировки следующего: A-> B -> ...-> Z -.> A)

Я думаю, вы могли бы назвать это истощение ресурсов , но это довольно общий термин, который также охватывает тупик.

3 голосов
/ 17 декабря 2009

Я бы назвал это голодом (ресурсом является процессор), а не тупиком .

1 голос
/ 17 декабря 2009

Да, я бы тоже назвал это тупиком.

Однако от этого зависит только один поток (поток A), а не все приложение.

0 голосов
/ 17 декабря 2009

Вот моя точка зрения:

Тупик - это ситуация, когда глобальное состояние программы больше не прогрессирует. Если A заблокирован, но программа все еще может завершиться, потому что B может найти решение, это не тупик.

...