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