Гарантируется ли отмена заблокированных функций файла / сокета при закрытии файла? - PullRequest
3 голосов
/ 12 апреля 2020

Я прочитал во многих местах (и иногда вижу в коде) идею о том, что закрытие номера файла в каком-либо потоке процесса немедленно отменит и разблокирует любой вызов блокировки ввода / вывода для этого файла (обычный файл, сокет, или что-то еще) сделано другим потоком.

Однако я не мог подать ни нормативную ссылку, гарантирующую, что это произойдет, ни даже linux конкретную c документацию, подтверждающую, что это так, а не случайно.

Коренится ли практика в простой традиции и небезопасна ли она во всех случаях или как-то гарантированно сработает?

(Во всяком случае, идея небезопасна в практической многопоточный код с любой частью, которую вы не полностью контролируете, поскольку вы не можете знать, когда другие потоки могут повторно использовать этот заданный файл. Я не рекомендую его.)

...