Это сценарий. У нас есть много потоков для доступа к разделу кода, который защищен критическим разделом, который гарантирует, что только один поток за раз получит доступ к этой части. Теперь вопрос в том, что произойдет, если нить погибнет в критическом разделе? Будет ли приложение зависать? или какой-то способ блокировки будет выпущен?Что произойдет, если поток в критической секции затухает?
ответ
Из MSDN:
Если поток завершается, пока он имеет право собственности критической секции, состояние критической секции не определено.
Источник: http://msdn.microsoft.com/en-us/library/windows/desktop/ms682608(v=vs.85).aspx
Вам нужно будет определить «штампы».
Вы имеете в виду, что это связано с неправильной памятью или другим доступом? Затем весь процесс выбрасывается ОС.
Вы имеете в виду, что нить прекращается (либо путем выхода, либо какой-либо другой нитью, заканчивающей ее)? Тогда у вас проблемы, потому что все выполнено правильно, включая завершение потока, поэтому все потоки, ожидающие критического раздела, будут застряли навсегда.
Вы имеете в виду, что нить входит в бесконечную петлю? Я не уверен, как Windows обрабатывает такую ситуацию, но есть две стратегии: либо ОС будет считать, что «все работает правильно, поэтому я должен держаться подальше», либо будет существовать системная квота ЦП, которая израсходована ОС для завершения процесса. Только процесс (поток в нем) может привести к завершению одного потока, все остальные механизмы выкинут весь процесс.
Я имел в виду второй вариант, он либо выхода или какой-либо другой поток завершает его. – Ram
- 1. DoModal в критической секции
- 2. Дизайн критической секции IOCP
- 3. Очередь критической секции
- 4. Джанго потенциал критической секции
- 5. Реализация критической секции в CUDA
- 6. Сбой критической секции
- 7. Веб-API критической секции
- 8. Можно ли вырезать поток в середине критической секции?
- 9. Что произойдет, если входной поток отправлен в выходной поток?
- 10. Изменить объект блокировки за пределами критической секции
- 11. C++ Обработка исключений в критической секции (Pthreads)
- 12. Вызов функции в критической секции семафоров
- 13. segfault в критической секции - избегание тупика
- 14. сигнала и обработки в критической секции
- 15. Когда это происходит? Тема приостановлена в критической секции
- 16. Чтение данных критической секции с использованием pthreads
- 17. Макро для создания уникальной критической секции OpenMP?
- 18. Что произойдет, если я создам поток в asp.net?
- 19. Что произойдет, если один поток выйдет из строя в процессе?
- 20. Что произойдет, если action = ""?
- 21. Блокировка критической секции в объекте, используемом для нескольких потоков
- 22. Что произойдет, если поток сбой, который лучше нить или процесс?
- 23. Что произойдет, если один поток OpenMP завершится с ошибкой?
- 24. Что произойдет, если приложение закрыто, когда поток ThreadPool записывает файл?
- 25. Что произойдет, если поток получит 10 реентерабельных замков и штампов?
- 26. Что произойдет, если поток выбрасывает исключение внутри синхронизированного блока
- 27. Может ли контекстный коммутатор проходить в критической секции?
- 28. Как удалить файл перед сбоем в критической секции с ANT?
- 29. Что произойдет, если * .exe.config удален?
- 30. Что произойдет, если php.ini отсутствует?
Чтобы немного расширить это: если это поведение непригодно, используйте мьютекс вместо критического раздела. –