Когда я был программистом BeOS, я прочитал эта статья Бенуа Шиллингса, описывающая, как создать «бенафор»: метод использования атомарной переменной для обеспечения критической секции, который позволяет избежать необходимости захвата/освобождения мьютекса в обычном случае (без конфликтов).
Я подумал, что это было довольно умно, и кажется, что вы можете проделать тот же трюк на любой платформе, которая поддерживает атомарное приращение/декремент.
С другой стороны, это похоже на то, что можно было бы так же легко включить в саму стандартную реализацию мьютекса... в этом случае реализация этой логики в моей программе была бы избыточной и не давала бы никакой пользы.
Кто-нибудь знает, используют ли этот трюк внутри современные API блокировки (например, pthread_mutex_lock()/pthread_mutex_unlock())? И если нет, то почему?