multithreading - C# Thread safe code -
is code thread safe?
dostuff called in 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 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; } }
is code thread safe?
yes, is. code doesn't use shared state. definition code doesn't uses shared state thread-safe.
you can call dostuff concurrently in number of threads without problem. said, dostuff method isn't useful though.
Comments
Post a Comment