永发信息网

NET4.X并行任务Task需要释放吗

答案:1  悬赏:30  手机版
解决时间 2021-04-03 14:30
NET4.X并行任务Task需要释放吗
最佳答案
如果为每一个Task都分配一个WaitHandle,那么释放Task将是一个好措施因为这样能提高性能。但是事实并非如此,现实中,为Task分配WaitHandle的情况是非常少出现的。在.NET 4.0中,WaitHandle在以下几种情况会延迟初始化:访问 ((IAsyncResult)task).AsyncWaitHandle成员,或者调用Task的WaitAll()/WaitAny()方法(这两个方法在.NET4.0版本中,内部是基于Task的WaitHandle对象实现的)。这使得回答“是否应该释放Task”问题更加困难了,因为如果Task都使用了WaitAll()/WaitAny(),那么释放Task就是一个好选择。
public interface IAsyncResult{ object AsyncState { get; } WaitHandle AsyncWaitHandle { get; } bool CompletedSynchronously { get; } bool IsCompleted { get; }}
在.NET 4.0中,一个Task一旦被释放,它的大多数成员访问都会抛出ObjectDisposedExceptions异常。这使得完成的任务很难被安全的缓存,因为一个消费者释放Task后,另一个消费者无法再访问Task的一些重要成员,如ContinueWith()方法或Result属性。
这里还有另外一个问题:Task是基础同步基元。如果Task被用于并行化,如在一个fork/join模式(”分支/合并”模式)中那么它就很容易知道什么时候完成它们和什么时候没有人再使用它们
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
上师范大学以后好就业吗?
电压降选导线怎么计算
水泥地面灰尘去除方法
硬盘录像机怎么算硬盘能录多少天
6月8日热火vs凯尔特人詹姆斯几投几中
想问问八星购物 里面卖的东西是不是正品啊?
春雨想叫醒笋芽儿(扩句)
已有一张动车票,在不退掉的情况下,可以继续
220v电动机有点发热!提不起速度什么原因?
temptation是什么意思
FSX的问题(我是新手)如何让客机起飞滑行时
我家房子后面有个沟,他们这几天都在那挖土,
防弹少年团(BTS)成员 在韩国人气顺位
09/02/2018澳洲保健品怎么理解日期
用C#编程输出100以内的所有素数。
推荐资讯
谁用过王乃正二胡
法律的重要意义和影响,你认为法律的主要作用
今年二建假信息报名,审查过了,但准考证打印
给脸喷热气、打开毛孔的那个机器叫什么名字
在网上看到网友说做汽车维修去国合快车比较好
穿帆布鞋为什么体育课还被罚脱鞋?
已知实数abcd,满足a2+b2=1,c2+d2=9,则ac+bd的
请文化人士分析下韩寒的《1988——我想和这个
求一起同过窗百度云!!!!
百度网盘没了会员5t空间还有吗
吃了两次半生熟牛肉,要紧吗
单选题研究华商历史的郭德利指出:“在史籍中
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?