日期:2014-05-18  浏览次数:20855 次

★★★请帮我看一下如何控制这个程序的流程,谢谢大家●●●
我有一个程序,开了几个线程,每个线程都是循环的,会在某个特定条件下调用同一个函数,有可能同时满足条件,但是这个函数的运行需要一定的时间才能完成,请问调用过程是排队的吗?如果我想让一些调用者发现此函数被占用就放弃,但是某些调用需要优先处理如何控制.

简单代码如:

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起来