【发布时间】:2016-12-23 09:44:07
【问题描述】:
我有一个名为 API 的类库应用程序。在其中我有一个名为 SynchronizeMe 的方法。
public class APIClass
{
object baton = new object();
static int count = 0;
public void SynchronizeMe()
{
while(true)
{
lock (baton)
{
int temp = count;
Thread.Sleep(5000);
count = temp + 1;
Console.WriteLine("Thread Id " + Thread.CurrentThread.ManagedThreadId + " Name:" + Thread.CurrentThread.Name + " incremented count to " + count);
}
Thread.Sleep(1000);
}
}
}
我有两个控制台应用程序 Thread1 和 Thread2。他们都调用了 SynchronizeMe 方法。 喜欢
API.APIClass apicall = new API.APIClass();
apicall.SynchronizeMe();
当我运行它时,我看到它们的打印计数都从 1 开始。这意味着它没有同步。我理解多线程的概念有什么问题吗?还是代码有问题?或者同一应用程序中的线程只能同步。如果我想以这种方式同步是什么方式?
我认为 Thread1 和 Thread2 都有不同的 APIClass 实例,因此无法同步。有什么出路吗?
【问题讨论】:
-
澄清一下,您是否有两个单独运行的控制台应用程序调用库,或者单个控制台应用程序中有两个线程?
-
@user783836 两个单独运行的控制台应用程序。
-
@TBAG 看看我的答案
标签: c# multithreading c#-4.0