我是否可以仅在单元初始化中在通用列表或字典中添加项目,然后将其作为多个线程的只读使用?
我在一个主题中读到TList<T>
是线程安全的,而另一个主题是TDictionary<T>
不是。两者之间有什么区别?
答案 0 :(得分:3)
阅读是安全的,写不是。只要您可以确保在任何线程访问它之前填充TList
/ TDictionary
,并且您只检索项目,从不添加/修改项目,那么它是安全的。但是,最好不要依赖这种行为。您应始终明确地同步跨线程的共享资源访问权限,例如使用TCriticalSection
,TMutex
,TMREWSync
(或Win32 SRW锁定),TMonitor
等。< / p>