Недавно я изучал сон парикмахера и понял, что это похоже на бинарный семафор, когда значение разрешения равно 1. А как насчет того, когда оно превышает 1? Будет ли один поток заменен новым без освобождения, когда будет получено несколько потоков?
Я думаю, что это небезопасно, но я не уверен. Было бы неплохо, если бы вы могли сказать мне разницу между синхронизацией и одновременным доступом.
Семафор работает как ворота. Его нельзя квалифицировать как потокобезопасный или потоконебезопасный. Ресурсы (в общем случае объекты) могут быть потокобезопасными или небезопасными.
Если это бинарный семафор, только один поток может получить доступ к вашим ресурсам в любой момент. Так что нет необходимости думать о потокобезопасности.
Но если число семафоров равно 2, два потока могут одновременно обращаться к одному и тому же ресурсу. Если ваш ресурс (какой-то объект) является потокобезопасным, все в порядке. В противном случае вам нужно будет реализовать какой-то механизм синхронизации, чтобы небезопасная часть могла быть доступна только одному потоку за раз.