像TDictionary <t>和TList <t>这样的Delphi只读泛型是线程安全的吗?

时间:2017-08-12 17:14:10

标签: multithreading delphi tlist tdictionary

我是否可以仅在单元初始化中在通用列表或字典中添加项目,然后将其作为多个线程的只读使用?

我在一个主题中读到TList<T>是线程安全的,而另一个主题是TDictionary<T>不是。两者之间有什么区别?

1 个答案:

答案 0 :(得分:3)

阅读是安全的,不是。只要您可以确保在任何线程访问它之前填充TList / TDictionary,并且您只检索项目,从不添加/修改项目,那么它是安全的。但是,最好不要依赖这种行为。您应始终明确地同步跨线程的共享资源访问权限,例如使用TCriticalSectionTMutexTMREWSync(或Win32 SRW锁定),TMonitor等。< / p>