Alternativa ao spinlock

Estou usando a seguinte abordagem de spinlock:

while(!hasPerformedAction()){
    //wait for the user to perform the action
    //can add timer here too
}

setHasPerformedAction(false);

return getActionPerfomed();

isso basicamente espera que um usuário execute uma ação e a devolve. Atualmente, algo solicita uma resposta do usuário antes de continuar, é por isso que espero até que a entrada seja recebida. No entanto, eu queria saber se isso é ineficiente e se estamos esperando por um tempo (ou seja, <= 30 segundos) desacelerará o PC que está executando este aplicativo. Existem outras alternativas usando essa abordagem, ou seja, bloqueios, semáforos? Em caso afirmativo, qual é a sintaxe?

Obrigado,

Aly

questionAnswers(5)

yourAnswerToTheQuestion