LockFile с таймаутом? - PullRequest
       2

LockFile с таймаутом?

1 голос
/ 24 июля 2011

LockFile() не имеет тайм-аут ожидания, LockFileEx() также не имеет.
Если я хочу подождать блокировки файла с тайм-аутом, как мне это сделать?

То есть, как мне реализовать следующее:

DWORD LockFileTimed(HANDLE h,  
    DWORD milli,  
    __in  DWORD dwFileOffsetLow,  
    __in  DWORD dwFileOffsetHigh,  
    __in  DWORD nNumberOfBytesToLockLow,  
    __in  DWORD nNumberOfBytesToLockHigh)  

1 Ответ

0 голосов
/ 24 июля 2011

Я понимаю ваше намерение LockFileTimed, так как оно не вернется немедленно, когда файл не может быть заблокирован, но попробуйте снова заблокировать файл в течение заданного времени.Это правильно?Неясно, хотите ли вы этого.

Простой способ реализовать это просто написать небольшой цикл для проверки кода возврата.

DWORD timer_end = GetTickCount() + milli;
while (GetTickCount() < timer_end) {
  if (LockFile(...))
    return TRUE;
  else
    Sleep(0); // Wait sometime.
}
return FALSE;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...