Что означает код errno 11 (EDEADLK)?

 
Также может означать:
КонстантаТипОС
ERROR_BAD_FORMATОшибка WindowsWindows
KERN_ALREADY_IN_SETКод возврата ядра macOSmacOS
ippStsResFloorСтатус Intel IPPЛюбая
EAGAINerrnoLinux
EAGAINerrnoSolaris
EAGAINerrnoWindows
NO_EXCEPTION_HANDLING_SUPPORTКод BSODWindows
Предыдущий Следующий
EAGAIN EAGAIN

EDEADLK

Некоторые реализации потоков возвращают ошибку EDEADLK, когда мьютекс пытается повторно заблокировать поток, уже владеющий этим мьютексом. Стандарт POSIX устанавливает, что результат повторной блокировки мьютекса его владельцем не определён. Single UNIX® Specification решает эти вопросы с помощью нового атрибута мьютекса, называемого типом.

Поддержка потоков IBM® i использует тот же подход, который предлагает Single UNIX Specification, и также приводит поток к взаимной блокировке при попытке повторно заблокировать обычный, нерекурсивный мьютекс. Поскольку многие пользователи Pthreads не проверяют коды возврата функций, взаимная блокировка защищает приложения от повреждения данных, которое могло бы возникнуть, если попытаться повторно заблокировать уже удерживаемый мьютекс, а затем разблокировать его так, будто блокировка прошла успешно.

Deadlock error EDEADLK (11)

Single UNIX Specification

Single UNIX Specification — стандарт, по которому оцениваются основные интерфейсы ОС UNIX. Стандарт UNIX включает обширный набор возможностей, а его основные тома одновременно являются стандартом IEEE Portable Operating System Interface (POSIX) и стандартом ISO/IEC 9945. Спецификация охватывает базовую среду операционной системы, сетевые службы, службы оконной системы, вопросы интернационализации и языки программирования. Последняя версия стандарта сертификации — UNIX V7, согласованная с Single UNIX Specification Version 4, редакция 2018 года.

Прочитать или скачать Single UNIX Specification можно здесь.

Рабочая группа UNIX Systems при управляющем совете The Open Group определяет стратегию и влияет на направление развития Single UNIX Specification. В рабочую группу входят платиновые участники The Open Group — ведущие представители отрасли, каждый из которых представлен в управляющем совете The Open Group. Примерами операционных систем на основе UNIX являются IBM® AIX®, HPE™ HP-UX®, Oracle® Solaris® и Inspur® K-UX.

Взаимные блокировки

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

В операционной системе взаимная блокировка возникает, когда процесс или поток переходит в состояние ожидания, потому что запрошенный системный ресурс удерживается другим ожидающим процессом, который, в свою очередь, ждёт другой ресурс, удерживаемый ещё одним ожидающим процессом. Если процесс бесконечно долго не может изменить своё состояние, поскольку запрошенные им ресурсы используются другим процессом, который сам находится в ожидании, считается, что система находится во взаимной блокировке.

В системах связи взаимные блокировки возникают главным образом из-за потери или повреждения сигналов, а не из-за конкуренции за ресурсы.


Нужно найти другой код? Найти другой код состояния или ошибки.