gpt4 book ai didi

c# - Try-Finally 与 Thread.BeginCriticalRegion

转载 作者:太空狗 更新时间:2023-10-30 01:34:49 24 4
gpt4 key购买 nike

据我了解,必须在线程中止生效之前完成 finally block 。出于什么目的应该使用 Thread.BeginCriticalRegion,冒着终止 appdomain 的风险?

例子:

try
{
}
finally
{
CriticalOperation();
}

Thread.BeginCriticalRegion();
CriticalOperation();
Thread.EndCriticalRegion();

最佳答案

为了让它变得非常简单,try...finally... 防止 Thread.Abort(finally 部分完全protected 且不能被中断/将始终被执行),而 Thread.BeginCriticalRegion() 仅向 .NET 的运行时提供一些元信息:

来自 https://learn.microsoft.com/nl-nl/archive/blogs/bclteam/constrained-execution-regions-and-other-errata-brian-grunkemeyer

Critical regions don't really do much.

...

The first effect for critical regions is a way of informing the CLR that a lock is being held by a block of managed code

(注意,这只是信息……运行时做什么是它的问题。这里不能保证)

The second effect is that memory allocations within that block of code are marked as appdomain-critical.

然后它解释了运行时应该优先考虑为该代码块分配内存...所以运行时的其他元信息没有程序员的保证

关于c# - Try-Finally 与 Thread.BeginCriticalRegion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28786569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com