Bloqueios de bloqueios versus bloqueios sem bloqueio

Estou pensando aqui: se você tem 2 threads executando operações FAST que precisam ser sincronizadas, uma abordagem sem bloqueio não é mais rápida / melhor do que uma abordagem de troca de contexto / bloqueio?

Por não bloquear, quero dizer algo como:

while (true) {if (checkAndGetTheLock ()) break; }

A única coisa em que consigo pensar é a inanição (com a CPU esgotada) se você tiver muitos threads em loop ao redor da fechadur

Como equilibrar uma abordagem com a outra?

questionAnswers(4)

yourAnswerToTheQuestion