如何在Delphi中实现线程安全的列表包装?

Gra*_*aza 6 delphi multithreading semaphore critical-section

我有一个列表包装器,它维护两个Tstringlists和一个TClassList

我需要这个是线程安全的,这样:

  • 不允许并发写入(应输入某种等待状态)
  • 不允许在写入时读取(反之亦然)(应输入某种等待状态)
  • 并发读取允许

有关如何做到这一点的任何想法?我的直觉告诉我它需要的不仅仅是一个关键部分,可能是一个信号量或"使用计数器",也许其中一个与CS 结合使用.

我只是不太确定从哪里开始 - 从英语到伪代码的整体方法,到delphi实现或外部链接的任何事情都将非常感激.

Uwe*_*abe 12

您应该看一下sysutils.pas中声明的TMultiReadExclusiveWriteSynchronizer类...

  • 他们很容易称之为TGreenIdea并传达了与TMREWS一样多的信息.不要害怕长标识符名称. (6认同)

Ste*_*eve 5

看看这个教程. 穿越德尔福之路

看看第11章,但这都是好事.