gpt4 book ai didi

c# - 并行交易软件(续)

转载 作者:太空宇宙 更新时间:2023-11-03 20:32:30 25 4
gpt4 key购买 nike

我不确定是否需要使用像 PLINQ 这样的高级技术,因为我想重新表述我之前的问题 Paralleling trading software我认为我之前的问题太复杂而且不清楚,我希望现在我准确地提取了所需的信息而不是其他。

我有两个非常相似(我会说几乎相同)的线程。

线程 1:

while (true)
foreach (Object lockObj : lockObjects) {
lock (lockObj) {
// do work (may take some time)
}
}
}

Thread2(相同,但做了另一项工作):

while (true)
// the same lockObjects from Thread1 are used so threads use "shared" resources
foreach (Object lockObj : lockObjects) {
lock (lockObj) {
// do another work (may take some time)
}
}
}

Profilier 说大约 30% 的处理器时间我在等待锁被释放。如何轻松避免?如何说“好吧,如果对象现在被锁定,那么推迟这个对象的处理,处理另一个对象,过一会儿再返回这个对象?”

最佳答案

一种方法是维护一个空闲对象队列,以及每个线程已处理内容的列表。让线程从队列中找到他们在处理时尚未处理的第一个空闲对象,并在完成后将其放回队列末尾。

关于c# - 并行交易软件(续),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6768903/

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