Добрый день! В приложении используется Shared Memory. Для того, чтобы разные процессы не меняли данные одновременно используется spinlock в виде переменной, лежащей в той-же Shared Memory. Проблема в том, что при большом количестве заблокированных процессов, они начинают слишком много времени тратить в цикле спинлока. Сейчас есть идея сделать счетчик процеесов, коорые ждут лока и если их больше количества ядер-1, то сразу вызвать sleep вместо цикла спинлока. Может есть другие решения? Где про это все хорошо написано?