返回首页

我想知道,如果每个线程使用它的方法是在此代码:


List<thread> threadArray= new List<thread>();

int numberOfWorkers = 10;

EventWaitHandle ewh = AutoResetEvent(false);

Queue<string> container = new Queue<string>();

object sync = new object();

 

for(int i = 0; i < numberOfWorkers; i++)

{

    Thread t = new Thread(Worker);

    threadArray.Add(t);

    threadArray[i].Start();

}

 



public void Producer(string task)

{

   lock(sync)

   {

      container.Enqueue(task);

   }

   ewh.Set();

}

 

public void Worker()

{

    lock(sync)

    {

       string temp = container.Dequeue();

    }

 

    // do some work

    // after work is complete wait...

    ewh.WaitOne();

}</string></string></thread></thread>

因此,基本上就是我要问的是,如果每个线程使用它的"自己"的辅助方法,或者是他们(线程)共享这个单一的辅助方法吗?

回答

评论会员:游客 时间:2012/02/06
标记Nischalke:每个线程将共享的方法
|帕斯卡尔Ganaye:只有一个方法,但有10个线程
也许是你需要的行之一:
{C}
放置在不同的地方,这条线,它会告诉你什么线程运行
评论会员:游客 时间:2012/02/06
deepakdynamite:您好,创建线程有自己的方法,他们称之为副本。但我们谁决定变量在函数中使用的数据成员/函数的范围内或从外...例如:codeprelang="c#"ClassA{ spanclass="code-keyword"int/spaninta;spanclass="code-keyword"public/spanspanclass="code-keyword"void/spansomeOperation(){ ....Codetospanclass="code-keyword"do/spansomeoperationsonvariableinta} }/pre/code在上述情况下,线程将复制功能有差异,但所有副本的功能所使用的变量是共同的。所以你需要保持变量值并发INTA。另一个例子:{体C3}在上述情况下,不存在任何需要保持并发会有单独的副本的整体功能和功能使用局部变量。让我知道答案是,如果对您有用