Ver Mensaje Individual
  #7 (permalink)  
Antiguo 11/08/2013, 20:14
shiro51
 
Fecha de Ingreso: julio-2010
Mensajes: 34
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Como reducir uso de cpu en buble infinito

Ya me he mirado bastante y he probado el codigo y luego de romperme la cabeza ya que a microsoft le gusta poner codigo complicado sin saber una mierda... lo reduje a:

Cita:
#include <windows.h>
#include <stdio.h>

CRITICAL_SECTION BufferLock;
CONDITION_VARIABLE vThreadProc;

DWORD WINAPI ThreadProc (PVOID p)
{

while (true)
{
EnterCriticalSection (&BufferLock);

SleepConditionVariableCS (&vThreadProc, &BufferLock, INFINITE);
printf("Hola");

LeaveCriticalSection (&BufferLock);

Sleep (1);
}

return 0;
}

int main ( void )
{
InitializeConditionVariable (&vThreadProc);

InitializeCriticalSection (&BufferLock);

DWORD id;
HANDLE hThreadProc = CreateThread (NULL, 0, ThreadProc, (PVOID)1, 0, &id);

getchar();
WakeConditionVariable(&vThreadProc);
getchar();

return 0;
}
Por lo que veo y como me dijiste, ahorra tiempo de ejecucion y de bucles, unicamente se duerme esperando a que la variable cambie y entonces se reactiva.

Pero aun así, tiene que haber alguien que le avise y ese gastara mucha ejecución si es infinito... En algunos programas servirá... pero en otros no..

Gracias por la ayuda :)