★★★请帮我看一下如何控制这个程序的流程,谢谢大家●●●
我有一个程序,开了几个线程,每个线程都是循环的,会在某个特定条件下调用同一个函数,有可能同时满足条件,但是这个函数的运行需要一定的时间才能完成,请问调用过程是排队的吗?如果我想让一些调用者发现此函数被占用就放弃,但是某些调用需要优先处理如何控制.
简单代码如:
Thread t1,t2;
t1=new thread (new Threadstart(f1);
t2=new Thread (new threadstart(f2);
private void f1()
{
while(true)
{
if(.....)
Dopro(1);
if (.....)
Dopro(11);
Sleep(1000);
}
}
private void f2()
{
while(true)
{
if(.....)
Dopro(2);
if (.....)
Dopro(12);
Sleep(1000);
}
}
private void Dopro(int i)
{
........... //代码执行的很慢
}
现在t1,t2线程在某时,可能会每隔1秒种就调用一下Dopro(1)或Dopro(2) 过程,但是Dopro执行一次需要5秒钟, 我现在需求时 当 Dopro(1),Dopro(2) 时如果发现此过程在运行就可以放弃不执行, 但是当Dopro(11),Dopro(12)时就需要立刻执行它. 如何控制呢?
------解决方案--------------------join
------解决方案--------------------直接把公用的代码和变量Lock起来