1
1

Update the Windows wait functions. The most important change is for

the event registration, which in the case of a process dead detection
should be marked as fire once and taking long time.

This commit was SVN r15068.
Этот коммит содержится в:
George Bosilca 2007-06-14 04:35:46 +00:00
родитель 8dfa06a617
Коммит de324502bc

Просмотреть файл

@ -786,9 +786,6 @@ static void CALLBACK trigger_process_detection( void* lpParameter, BOOLEAN Timer
*/
int error = GetLastError();
}
/*if( 0 == CloseHandle( handle->registered_handle ) ) {
int error = GetLastError();
}*/
handle->registered_handle = INVALID_HANDLE_VALUE;
/**
* Get the exit code of the process.
@ -821,8 +818,18 @@ orte_wait_cb(pid_t wpid, orte_wait_fn_t callback, void *data)
handle->callback = callback;
handle->data = data;
RegisterWaitForSingleObject( &handle->registered_handle, (HANDLE)handle->pid,
trigger_process_detection, (void*)handle, INFINITE, WT_EXECUTEINWAITTHREAD);
if( false == RegisterWaitForSingleObject( &handle->registered_handle, (HANDLE)handle->pid,
trigger_process_detection, (void*)handle, INFINITE,
WT_EXECUTEONLYONCE | WT_EXECUTELONGFUNCTION) ) {
DWORD errcode = GetLastError();
char* localbuf = NULL;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL, errcode, 0, (LPTSTR)&localbuf, 1024, NULL );
opal_output( 0, "Failed to initialize the process callback for pid %lu error %s\n",
(unsigned long)(handle->pid), localbuf );
LocalFree( localbuf );
}
OPAL_THREAD_UNLOCK(&mutex);