O retorno de rendimento em c # thread-safe?
Eu tenho o seguinte trecho de código:
private Dictionary<object, object> items = new Dictionary<object, object>;
public IEnumerable<object> Keys
{
get
{
foreach (object key in items.Keys)
{
yield return key;
}
}
}
Isso é seguro para threads? Se não tenho que colocar umlock
em torno do loop ou oyield return
?
Aqui está o que eu quero dizer:
Thread1 acessa oKeys
propriedade enquanto Thread2 adiciona um item ao dicionário subjacente. Thread1 é afetado pelo adicionar de Thread2?