gpt4 book ai didi

C#线程安全代码

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

这段代码线程安全吗?

DoStuff 使用 Task 在新线程中调用。

Task.Factory.StartNew(() => DoStuff());


private void DoStuff()
{
List<SalesRecord> salesRecords = new List<SalesRecord>();
SalesRecord salesRecord1 = new SalesRecord {Amount = 10.0, Sales = 1};
SalesRecord salesRecord2 = new SalesRecord {Amount = 15.0, Sales = 1};
SalesRecord salesRecord3 = new SalesRecord {Amount = 1.0, Sales = 2};
salesRecords.Add(salesRecord1);
salesRecords.Add(salesRecord2);
salesRecords.Add(salesRecord3);
SalesRecord result = Util.SumSales(salesRecords);
}

仅用于存储数据的结构:

public struct SalesRecord
{
public uint Sales;
public double Amount;
}

东西

public static class Util
{
public static SalesRecord SumSales(List<SalesRecord> records)
{
SalesRecord result = new SalesRecord();

result.Amount = records.FindAll(record => (record.Sales == 1)).Sum(record => record.Amount);
result.Sales = 1;
return result;
}
}

最佳答案

Is this code thread safe?

是的,是的。此代码不使用任何共享状态。根据定义,不使用任何共享状态的代码是线程安全的。

您可以在任意数量的线程中并发调用 DoStuff 而不会出现任何问题。尽管如此,DoStuff 方法并不是很有用。

关于C#线程安全代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29850167/

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