Это на самом деле три разные концепции или я путаюсь? (Я читал статьи о потоке и сборке мусора вместе и запутался.)
«Критический раздел» - я думаю, что это может быть просто термином для разделов кода, к которым вы не хотите, чтобы несколько потоков обращались одновременно, т.е. внутри операторов lock и Monitor.Enter / Exit?
«Критическая область» - Здесь нет реальной подсказки - MSDN говорит что-то вроде «Это говорит хосту, что исключения, генерируемые в разделе, могут иметь более широкий эффект». И что «хосты CLR, например Sql Server» могут по-разному обрабатывать исключения, выбрасываемые в критических областях. Иначе как? И почему? И, самое главное, в каких реальных сценариях мне может понадобиться пометить код как критическую область?
«Область ограниченного выполнения» - Я сталкивался с этим, когда читал о CriticalFinalizerObject в статье по сбору мусора.
Все, что я могу понять из MSDN об этом, - это то, что код в одном из этих регионов каким-то образом гарантированно будет выполняться (но как?) И поэтому не должен выбрасывать «внеполосные» исключения.
Что такое out-of-band exception
? (Я сделал это в Google, но он просто спросил меня, имею ли я в виду "исключение за пределами границ").
Это какое-то необработанное исключение? Или только определенные типы исключений? И снова, самое главное, в каких реальных сценариях мне может понадобиться «область ограниченного выполнения»?
Поскольку я не совсем хорошо понимаю концепции, я не уверен, какие теги нужны этому вопросу, кроме ".NET".