Is this code thread safe?
DoStuff is called in a new thread using 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); } A struct just to store data:
public struct SalesRecord { public uint Sales; public double Amount; } stuff
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; } }
staticproperties and you operate with only local variable, there is no possibility to have multithreading problem outsideDoStuff. This makesDoStuffthread-safe.