C#中多线程的例子

当涉及到多线程编程时,C# 提供了许多工具和库来简化任务。以下是更多关于C#中多线程的例子:

异步和 await: 使用 asyncawait 关键字可以轻松实现异步编程,而不必直接操作线程。这对于处理 I/O 操作等异步任务非常有用。

using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        Console.WriteLine("Main Thread: Start");

        // 异步调用
        await MyAsyncMethod();

        Console.WriteLine("Main Thread: End");
    }

    static async Task MyAsyncMethod()
    {
        Console.WriteLine("Async Method: Start");
        await Task.Delay(2000);  // 模拟异步操作
        Console.WriteLine("Async Method: End");
    }
}

Parallel 类: System.Threading.Tasks.Parallel 类提供了一些用于并行处理的静态方法。这对于并行执行迭代操作非常有用。

using System;
using System.Threading.Tasks;

class Program
{
    static void Main()
    {
        Console.WriteLine("Main Thread: Start");

        // 使用 Parallel.ForEach 并行处理集合
        Parallel.ForEach(new[] { 1, 2, 3, 4, 5 }, item =>
        {
            Console.WriteLine("Parallel Thread: " + item);
        });

        Console.WriteLine("Main Thread: End");
    }
}

Mutex(互斥体): 使用 Mutex 类可以实现线程同步,确保多个线程之间的互斥访问。

using System;
using System.Threading;

class Program
{
    static Mutex mutex = new Mutex();

    static void Main()
    {
        for (int i = 0; i < 3; i++)
        {
            Thread t = new Thread(MyThreadMethod);
            t.Start();
        }
    }

    static void MyThreadMethod()
    {
        mutex.WaitOne();
        Console.WriteLine("Thread entered: " + Thread.CurrentThread.ManagedThreadId);
        Thread.Sleep(2000);
        Console.WriteLine("Thread exited: " + Thread.CurrentThread.ManagedThreadId);
        mutex.ReleaseMutex();
    }
}

Monitor 类: Monitor 类提供了一种基本的线程同步机制,可以使用 lock 关键字来简化代码。

using System;
using System.Threading;

class Program
{
    static object lockObject = new object();

    static void Main()
    {
        for (int i = 0; i < 3; i++)
        {
            Thread t = new Thread(MyThreadMethod);
            t.Start();
        }
    }

    static void MyThreadMethod()
    {
        lock (lockObject)
        {
            Console.WriteLine("Thread entered: " + Thread.CurrentThread.ManagedThreadId);
            Thread.Sleep(2000);
            Console.WriteLine("Thread exited: " + Thread.CurrentThread.ManagedThreadId);
        }
    }
}

这些例子展示了在C#中使用异步、并行编程和线程同步的一些建议方法。根据实际需求和情境,你可以选择适合你应用程序的方法。确保在多线程编程中处理好线程同步和异常处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值