substituir bloqueio de rotação com o sinal
Pergunta
eu tenho um monte de spin locks no meu código multithread e na maioria das vezes eles estão esperando por outros segmentos para fazer o trabalho e, assim, mastigar um monte de uso da CPU. No Linux eu uso normalmente pthread_cond_wait e pthread_cond_signal para pausar um fio e acordar quando sinalizado. Existe algo como isto nas bibliotecas de impulso? Ter um olhar rápido eu não poderia encontrar qualquer coisa.
Visual Studio 2005
Solução
A ele, impulsionar os chama de variáveis ??de condição: http://www.boost.org/doc/libs/1_39_0/doc/html/thread/synchronization.html#thread.synchronization.condvar_ref
Outras dicas
Você está procurando um Mutex ou um semáforo. A biblioteca de impulso tem Mutex e apoio Semaphore .
Um Mutex é um binário Semaphore, que é simplesmente visto como um bloqueio, permitindo que apenas um thread para passar por sua seção crítica .
semáforos pode ajudar a simplificar algumas situações em que um bloqueio (Mutex) é demasiado restritiva.