Supponiamo di avere una classe frequentemente utilizzata in un contesto a thread singolo:
public class Foo
{
public List<Bar> Data;
public virtual void ChangeData()
{
for(var i =0; i < Data.Count; i++)
{
if(i % 4 == 0)
{
data[i].Baz();
}
}
}
}
Se dovessimo decidere che volevamo usare il thread in un contesto multi-thread (oltre al suo attuale utilizzo a thread singolo), ci sono dei vantaggi (supponendo che abbia una copertura completa del test unitario) per creare un thread-safe sottoclasse 'ThreadSafeFoo' vs. alterando 'Foo' in thread-safe?
Mi chiedevo questo perché ci sono sottoclassi specifiche in System.Collections
che devono essere usate attraverso i thread, e volevo sapere se c'era un motivo per cui questo thread-safety non era semplicemente passato in List
, ecc.