线程 thread C# 实现10的奇偶打印

在下例中,线程由 Main 函数创建和启动。 新线程使用 WaitOne 方法等待事件。 该线程将被挂起,直到由执行 Main 函数的主线程对事件发出信号。 事件发出信号后,辅助线程返回。 在这种情况下,因为该事件仅用于激活一个线程,因此可使用 AutoResetEvent 或 ManualResetEvent 类。

using System;
using System.Collections.Generic;
using System.Threading;

class Program
{
    private static AutoResetEvent auto = new AutoResetEvent(true);
    static List<int> list = new List<int>
    {

    };
    static int i;
    static void Main(string[] args)
    {
        int t = 10;

        for (int i = 1; i <= 10;i++)
        {

            list.Add(i);
           
        }

        
        int tt = t;
        ThreadStart ts1 = new ThreadStart(PrintOdd);
        Thread t1 = new Thread(ts1);
        ThreadStart ts2 = new ThreadStart(PrintEven);
        Thread t2 = new Thread(ts2);
        
        t1.Start();
        
        Thread.Sleep(10);
      //  t2.Start();
        Console.Read();
    }
    //打印1~100中的奇数
    public static void PrintOdd()
    {
        
        for (i = 1; i <= 3;i ++)
        {

            auto.WaitOne();
           if(i>3)
            {
                break;
            }
            
            Console.WriteLine(i);
            auto.Set();
        }
    }
    //打印0~100中的偶数
    public static void PrintEven()
    {
        for (; i <= 3;i ++)
        {

           
            auto.WaitOne();
 if (i > 3)
            {
                break;
            }
            Console.WriteLine(i);
            auto.Set();
        }
    }
}

 

using System;
using System.Threading;

class Program
{
    private static AutoResetEvent auto = new AutoResetEvent(true);
    static void Main(string[] args)
    {
        int t = 10;

        int i;
        i = t--;
        i = --t;
        int tt = t;
        ThreadStart ts1 = new ThreadStart(PrintOdd);
        Thread t1 = new Thread(ts1);
        ThreadStart ts2 = new ThreadStart(PrintEven);
        Thread t2 = new Thread(ts2);
        
        
        t2.Start();
        Thread.Sleep(10);
        t1.Start();
        Console.Read();
    }
    //打印1~100中的奇数
    public static void PrintOdd()
    {
        for (int i = 1; i <= 10; i = i + 2)
        {
          
            auto.WaitOne();
           
            Console.WriteLine(i);
            auto.Set();
        }
    }
    //打印0~100中的偶数
    public static void PrintEven()
    {
        for (int i = 0; i <= 10; i = i + 2)
        {

            auto.WaitOne();

            Console.WriteLine(i);
            auto.Set();
        }
    }
}

 

C#复制

using System;  
using System.Threading;  

class ThreadingExample  
{  
    static AutoResetEvent autoEvent;  

    static void DoWork()  
    {  
        Console.WriteLine("   worker thread started, now waiting on event...");  
        autoEvent.WaitOne();  
        Console.WriteLine("   worker thread reactivated, now exiting...");  
    }  

    static void Main()  
    {  
        autoEvent = new AutoResetEvent(false);  

        Console.WriteLine("main thread starting worker thread...");  
        Thread t = new Thread(DoWork);  
        t.Start();  

        Console.WriteLine("main thread sleeping for 1 second...");  
        Thread.Sleep(1000);  

        Console.WriteLine("main thread signaling worker thread...");  
        autoEvent.Set();  
    }  
}  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值