RSS

C# Thread Lock

23 11月

スレッドロックサンプル

 

using System;
using System.Threading;

public class LockSample1
{
 public static ClsObject object1;

 public static void Main()
 {
 object1 = new ClsObject();

 ThreadStart worker1 = new ThreadStart(DoWork1);
 ThreadStart worker2 = new ThreadStart(DoWork2);
 Thread thread1 = new Thread(worker1);
 Thread thread2 = new Thread(worker2);

 thread1.Start();
 thread2.Start();
 thread1.Join();
 thread2.Join();

 Console.WriteLine("スレッド終了");
 }

 public static void DoWork1()
 {
 for (int i = 0; i < 10; i++)
 {
 lock (object1)
 {
 object1.Message = "*** ワーカー1 ***";
 }
 }
 }

 public static void DoWork2()
 {
 for (int i = 0; i < 5; i++)
 {
 lock (object1)
 {
 object1.Message = "((( ワーカー2 )))";
 }
 }
 }
}

public class ClsObject
{
 public string message;

 public ClsObject()
 {
 this.message = "no message";
 }

 public string Message
 {
 get { return this.message;}

 set
 {
 this.message = value;
 Console.WriteLine(this.message);
 Thread.Sleep(500);
 }
 }
}

 
コメントする

投稿者: : 2010/11/23 投稿先 C#

 

タグ: , , , ,

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中