Win32 API TerminateProcess () разъяснение с ожидающими операциями ввода-вывода, которые отменены или завершены - PullRequest
1 голос
/ 08 ноября 2010

Согласно http://msdn.microsoft.com/en-us/library/ms686714(VS.85).aspx:

TerminateProcess инициирует завершение и немедленно возвращается. это останавливает выполнение всех потоков внутри процесса и запросов отмена всех ожидающих ввода / вывода. Завершенный процесс не может выйти пока все ожидающие операции ввода-вывода не будут завершены или отменены.

В моем приложении иногда нужно принудительно завершать процесс, который переходит в плохое состояние. Я использую Lucene для индексации, и приведенное выше заявление беспокоит меня, что хотя Lucene спроектирован так, чтобы быть терпимым к сбоям, если операции ввода-вывода можно «отменить», а не «завершить», это указывает на то, что индекс все еще может быть поврежден .

Может ли кто-нибудь пролить свет на то, когда / если операция ввода-вывода может быть отменена?

1 Ответ

1 голос
/ 04 ноября 2011

Я читаю

Это [...] требует отмены всех ожидающих операций ввода-вывода.Завершенный процесс не может завершиться, пока все ожидающие операции ввода-вывода не будут завершены или отменены.

как

Это [...] запрашивает отмену всех ожидающих операций ввода-вывода.Завершенный процесс не может завершиться, пока все ожидающие операции ввода-вывода не будут отменены.Некоторые ожидающие операции ввода-вывода могут немного завершиться, прежде чем они будут отменены.

Я бы поэтому ожидал, что завершится полный диапазон от любого до всех ожидающих операций ввода-вывода.

Если вы хотите "принудительно завершить процесс, который входит в плохое состояние «вы не можете ожидать, что состояние / данные приложения останутся в хорошем состоянии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...