请问TQueue是thread safe的吗?(50分)

  • 主题发起人 Kelvin_zillion
  • 开始时间
K

Kelvin_zillion

Unregistered / Unconfirmed
GUEST, unregistred user!
在Delphi 7中
 
BDE组件都是线程安全的
 
不是TQuery啊,是FIFO的队列TQueue
 
对于同一个TQueue,肯定不安全
 
不安全的。你可以用
TThreadList完成同样的功能
 
不行,TThreadList不是Queue
用TCriticalSection加TQueue就安全了
 
同意用TCriticalSection+TQueue解决
 
TQueue不是
但 Tinterfaceslist是。
 
使用TQueue的Pop和Push使应该用因为涉及到写操作必须保证单点写,Peek方法是读取,可以多个线程同时操作, 所以可以使用TMultiReadExclusiveWriteSynchronizer对象。
调用Pop和Push的前后分别调用TMultiReadExclusiveWriteSynchronizer的begin
Write和EndWrite,调用Peek方法的前后调用TMultiReadExclusiveWriteSynchronizer的begin
Read和EndRead,这样效率比较高。
 
接受答案了.
 
顶部