gpt4 book ai didi

c# - 我需要使用和分配锁吗?

转载 作者:太空宇宙 更新时间:2023-11-03 21:55:43 24 4
gpt4 key购买 nike

这可能是一个愚蠢的问题,但我是否需要使用和分配锁,或者我可以简单地返回结果。

例如:

我有一个私有(private)辅助方法,它返回一个 IEnumerable 文件名列表。它使用锁来确保该方法在遍历 m_transfers 集合时是线程安全的。

我需要作业吗...

IEnumerable<String> updated;
lock (m_transfers.Lock)
{
updated = m_transfers.Values.Where(transfer => transfer.Updated)
.Select(transfer => transfer.Filename);
}
return updated;

或者我可以做吗

lock (m_transfers.Lock)
{
return updated = m_transfers.Values.Where(transfer => transfer.Updated)
.Select(transfer => transfer.Filename);
}

最佳答案

不,您不需要添加额外的变量;无论哪种方式,语义都是相同的,因为在任何一种情况下,我们都只会在释放锁后实际上返回值。

由于该变量没有用处,我会删除它并使用第二个版本 - 虽然技术上,编译器实际上将它放回原处(一个 涉及 try/finally,在 IL 级别,您不能从 tryret;所以编译器实际上像你的第一个版本一样编写它)。

关于c# - 我需要使用和分配锁吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12386885/

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