Если вы посмотрите документацию, описывающую использование переменных условия (cv), вы увидите, что, например, в PThreads и C++ вам не нужно удерживать мьютекс cv, чтобы вызывать уведомление об этом cv. В то время как, например, в Java и Python вы должны заблокировать мьютекс, чтобы сделать то же самое.Шаблон использования переменных условий в языках C/C++ и других языках
Есть ли какая-то серьезная причина, почему вещи реализованы таким образом (я имею в виду последний случай), учитывая, что реализация языка, такого как Java, в конечном итоге использует некоторые собственные инструменты потоковой передачи?
Возможно, это не реализовано поверх просто pthreads .. но это всего лишь предположение. Я чувствую, что этот вопрос может стать лучше (или даже * any *) ответов на http://cs.stackexchange.com/ ... –
Очевидно, что JVM может реализовать его так, но это делает распространенную ошибку, которую я видел многие, многие люди делают на C++ гораздо менее вероятно при достаточно низкой стоимости (вам нужно удерживать блокировку немного дольше, но это все) – Voo
@Voo Ошибка в том, что мьютекс не удерживается при изменении данных, от которых зависит условие? – vehsakul