top*_*l32 5 .net c# multithreading
据我了解,在线程中止生效之前,必须完成 finally 块。应该出于什么目的Thread.BeginCriticalRegion而使用,冒着终止应用程序域的风险?
例子:
try
{
}
finally
{
CriticalOperation();
}
Run Code Online (Sandbox Code Playgroud)
或者
Thread.BeginCriticalRegion();
CriticalOperation();
Thread.EndCriticalRegion();
Run Code Online (Sandbox Code Playgroud)
为了使其变得非常简单,try... finally...请进行防护Thread.Abort(该finally部分受到完全保护并且不能被中断/将始终执行),同时Thread.BeginCriticalRegion()只向.NET运行时提供一些元信息:
关键区域并没有真正做太多事情。
...
关键区域的第一个作用是通知 CLR 托管代码块正在持有锁
(请注意,这只是信息......运行时所做的是它的问题。这里不能保证)
第二个效果是该代码块内的内存分配被标记为应用程序域关键。
然后它解释运行时应该优先为该代码块分配内存......因此运行时的其他元信息对程序员没有保证
| 归档时间: |
|
| 查看次数: |
1271 次 |
| 最近记录: |