decimal maxPrice = 0;
for (int i = 0; i < products.Count; i++)
{
Product product = products[i];
if (product.Price > maxPrice)
{
maxPrice = product.Price;
product.Enabled = true;
// Set all others to Disabled
foreach (Product other in products.Where(p => p.Id != product.Id))
{
other.Enabled = false;
}
}
}
由于某种原因,threadTwo永远不会启动,输出总是threadOne但是当我通过threadOne切换threadTwo的定位时,threadOne不会运行。我想这是他们进入队列的方式,但我不知道如何修复它。
答案 0 :(得分:3)
问题是如何将函数传递给线程。你调用它们而不是传递callable。您可以通过删除括号()
:
print("thread two")
threadTwo = Thread(target=mainLoop)
print("thread one")
threadOne = Thread(target=pingGetterLoop)
由于两个函数都包含无限循环,因此您永远不会过去调用第一个函数,然后永远循环。