Может ли использование sem_trywait() вызвать тупик

Можно с помощью sem_trywait() позволить тебе зайти в тупик или в живую?

2 ответа

Он должен завершиться с ошибкой E_DEADLK, если два потока борются за один и тот же ресурс, заблокированный семафором друг друга. Это правильное поведение, но вам нужно обнаружить его и повторить, если это произойдет. Другими словами, да, он может зайти в тупик, но система обнаружит это и выйдет из строя, а не оставит вас в покое.

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

Другие вопросы по тегам