logo
Contato | Sobre...        
rebarba rebarba

Rodrigo Strauss :: Blog


E o bug é....

O bug está no uso incorreto da função WaitForMultipleObjects:

DWORD WINAPI WaitForMultipleObjects(
  __in  DWORD nCount,
  __in  const HANDLE *lpHandles,
  __in  BOOL bWaitAll,
  __in  DWORD dwMilliseconds
);

Parameters:

nCount [in]:The number of object handles in the array pointed to by lpHandles. The maximum number of object handles is MAXIMUM_WAIT_OBJECTS.

Vendo o valor de MAXIMUM_WAIT_OBJECTS em winnt.h:

#define MAXIMUM_WAIT_OBJECTS 64     // Maximum number of wait objects

E no meu post:


 static const DWORD threadCount = 100;

...


//
// esperando TODAS as threads retornarem
//             |___________________________________
//                                                 |
//                                                 v
//
WaitForMultipleObjects(threadCount, &threads[0], TRUE, INFINITE);


Não podemos esperar 100 threads de uma vez só. Agora sabemos que o programa não espera todas as threads terminarem antes de mostrar o resultado.


Em 24/09/2008 01:23, por Rodrigo Strauss


  
 
 
Comentários
Fernando Roberto | website | em 25/09/2008 | #
Um gancho perfeito para a mesma história, só que em Kernel Mode.

http://www.driverentry.com.br/blog/2008/02/kewaitformultiple...

[]s,
Fernando.
rebarba rebarba
  ::::