RSS

C# Thread Signal

23 11月

シグナルの送受信

 

using System;
using System.Threading;

public class AutoResetEventSample
{
 static ManualResetEvent event1;

 public static void Main()
 {
 Thread thread1 = new Thread(DoWork1);
 Thread thread2 = new Thread(DoWork2);
 Thread thread3 = new Thread(DoWork3);
 event1 = new ManualResetEvent(false);
 thread1.Start();
 thread2.Start();
 thread3.Start();
 thread1.Join();
 thread2.Join();
 thread3.Join();

 Console.WriteLine("終了");
 }

 public static void DoWork1()
 {
 Console.WriteLine("DoWork1はシグナル待ちです。");
 event1.WaitOne();
 Console.WriteLine("DoWork1はシグナルを受け取りました。");
 }

 public static void DoWork2()
 {
 Console.WriteLine("DoWork2はシグナル待ちです。");
 event1.WaitOne();
 Console.WriteLine("DoWork2はシグナルを受け取りました。");
 event1.Reset();
 Console.WriteLine("DoWork2は非シグナル状態にしました。");
 Thread.Sleep(1000);
 Console.WriteLine("DoWork2はシグナルを送りました。");
 event1.Set();
 }

 public static void DoWork3()
 {
 Thread.Sleep(1000);
 Console.WriteLine("DoWork3はシグナルを送りました。");
 event1.Set();
 Console.WriteLine("DoWork3はシグナル待ちです。");
 event1.WaitOne();
 Console.WriteLine("DoWork3はシグナルを受け取りました。");
 }
}

 
コメントする

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

 

タグ: , , , ,

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中