私は、クラスライブラリアプリケーション呼び出し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);
}
}
}
私は2つのコンソールアプリケーションスレッド1とスレッド2を持っています。どちらもSynchronizeMeメソッドを呼び出します。
のように私はこれを実行すると、私はそれらの両方は、それがsyncronizedされていないことを意味1からカウント開始を印刷ご覧ください。私は何か間違ったマルチスレッドの概念を理解していますか?コードに問題がありますか?または、同じアプリケーション内のスレッドは、同期のみが可能です。この方法で同期したいのであれば、どうしたらいいですか?私は、スレッド1とスレッド2の両方でAPIClassのインスタンスが異なると思うので、同期ができません。何らかの方法がありますか?
明確にするために、ライブラリを呼び出す2つの独立して動作するコンソールアプリケーション、または1つのコンソールアプリケーションの2つのスレッドがありますか? – user783836
@ user783836 2つの別々のコンソールアプリケーションが実行されています。 – TBAG
@TBAG私の答えを参照してください – user783836