gpt4 book ai didi

multithreading - Delphi 多线程中的TList

转载 作者:行者123 更新时间:2023-12-03 14:56:29 25 4
gpt4 key购买 nike

在多线程应用程序中使用 TList 是否安全,该应用程序可由所有其他线程访问,但只有一个线程对其进行写入。场景是

每个线程都有一个唯一的 TList,只有该线程才会写入,而其他线程只会访问它以从中获取数据。

安全吗?

最佳答案

如果没有同步,那是不安全的。读取线程可以在写入线程修改列表的同时进行读取。修改列表可能意味着重新分配底层内存。

RTL 提供 TThreadList此类场景的类。每个线程,无论是写入线程还是读取线程,都需要将对列表的所有访问包装在 LockList 中。和UnlockList对。

var
ThreadList: TThreadList;//declared in some shared location
....
//each thread accesses the list like this:
var
List: TList;
....
List := ThreadList.LockList;
try
.... do stuff with List
finally
ThreadList.UnlockList;
end;

如果您使用的是支持泛型的 Delphi,则有一个泛型版本 TThreadList<T> .

关于multithreading - Delphi 多线程中的TList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14425871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com