Is List thread-safe for reading?

后端 未结 4 1029
遥遥无期
遥遥无期 2020-12-17 08:08

Is the following pseudocode thread-safe ?

IList dataList = SomeNhibernateRepository.GetData();

Parallel.For(..i..)
{
    foreach(var item in dataLi         


        
4条回答
  •  北荒
    北荒 (楼主)
    2020-12-17 08:37

    Yes, List is fine to read from multiple threads concurrently, so long as nothing's writing.

    From the documentation:

    A List can support multiple readers concurrently, as long as the collection is not modified.

    EDIT: Note that your code doesn't necessarily use List - just an IList. Do you know the type returned by GetData()? If you're in control of GetData() you probably want to document that the list returned by it is thread-safe for reading, if it's actually returning a List.

提交回复
热议问题