描述:
我有多个线程(4-32)。这些线程都可以访问一个数组:int resources[1024]。资源数组包含不同的值 (0-1023)。单个资源(int)只能有一个实例。每个线程需要不同数量的资源,这些资源有时会返回到数组中。线程可以多次请求资源,并且一次只返回部分获取的资源。每个线程都通过 2 种方法访问该数组:GetElement()、ReturnElement(int element)
GetElement():此方法锁定部分,从资源数组中删除最后一个元素并将其返回给调用线程。每个线程都在循环调用 n 个资源的方法。
ReturnElement(int element):此方法锁定部分,将参数中的资源元素附加到数组中的最后一个元素之后。每个线程都在循环调用 n 个资源的方法。
当前的实现存在缺陷,即当多个线程同时获取资源时,它们可能都没有获得所需的数量。我正在考虑在单个线程获取或返回资源时锁定对数组的访问,然后解锁它。这种方法阻塞了所有其他可能成为问题的线程。
有没有更有效的方法?