gpt4 book ai didi

java - 查询资源数组的高效同步

转载 作者:行者123 更新时间:2023-12-04 05:44:24 24 4
gpt4 key购买 nike

有 N 个资源的列表,每个资源一次最多可以被一个线程查询。

有几个线程需要大约同时做同样的事情:以任意顺序查询每个资源(每个线程都有不同的查询),并收集响应。

如果每个线程以相同的顺序循环资源,从 0 到 N-1,那么它们很可能不得不互相等待,这是效率不高的。

我想过让线程以随机排列循环遍历资源,但这似乎太复杂而且效率也不高,例如,对于 2 个资源和 2 个线程,在一半的情况下,它们会选择相同的顺序并等待每个其他。

有没有更简单有效的方法来解决这个问题?

最佳答案

不知何故,我对此的回答是没有。您无法控制线程及其访问资源的顺序,而且最重要的是(这是同步的整个点),您不知道它们将如何安排执行。即使试图让他们访问免费资源也会产生不可预测的结果,因为最后创建的线程可能会首先被调度。

我唯一想到的是分区。即,将要访问/被访问的资源和/或线程分成几部分。请注意,这不是一个简单的问题:正如您所说,拥有更少的线程和更少的资源会增加线程尝试访问已锁定资源的机会。

关于java - 查询资源数组的高效同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10879913/

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