gpt4 book ai didi

multithreading - 我是否需要一个关键部分来获取字符串列表中值的索引?

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

我有一个包含大约 100 个值的字符串列表 myStringList,我正在对其进行异步访问。我想知道这样做是否是线程安全的:

currentIndex := myStringList.IndexOf(wantedValue);

或者我总是必须这样做:

criticalS.Enter;
try
currentIndex := myStringList.IndexOf(wantedValue);
finally
criticalS.Leave;
end;

最佳答案

您绝对需要使用锁来保护可变字符串列表的所有访问。如果编写器线程在您的线程读取时修改列表,则代码可能会失败。您可能会引用已被破坏的字符串。或者,当您阅读该列表时,该列表可能会被重新分配到不同的地址。

您需要对所有访问(读和写)使用相同的锁。您可以使用多次读、独占写锁而不是临界区。但您确实需要某种形式的同步。

如果所有线程都从列表中读取,并且没有线程以任何方式修改它,那么您不需要锁。

关于multithreading - 我是否需要一个关键部分来获取字符串列表中值的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23973238/

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