当前位置:首页 > 行业动态 > 正文

c#多线程教程

C#是一种面向对象的编程语言,它支持多线程编程。以下是一个简单的C#多线程教程:,,1. 创建一个Thread对象。,2. 在Thread对象上调用Start方法来启动 线程。,3. 在需要的地方使用Thread类的方法来控制线程。,,这里有一个简单的C# 多线程示例代码:

C 多线程简介

C 多线程是指在一个程序中,有多个线程同时执行,线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位,多线程可以提高程序的执行效率,充分利用计算机资源。

C 多线程创建

1、继承 Thread 类

要创建一个多线程,需要继承 Thread 类,并重写其 Run() 方法,Run() 方法中的代码将在新线程中执行。

using System;
using System.Threading;
class MyThread : Thread
{
    public override void Run()
    {
        for (int i = 0; i < 10; i++)
        {
            Console.WriteLine("子线程:" + i);
            Thread.Sleep(100);
        }
    }
}
class Program
{
    static void Main(string[] args)
    {
        MyThread myThread = new MyThread();
        myThread.Start();
        Console.ReadKey();
    }
}

2、使用 Task 类(C 5.0及以上版本)

Task 类是 C 5.0 引入的新特性,用于简化多线程编程,与 Thread 类相比,Task 类提供了更简洁的 API。

using System;
using System.Threading.Tasks;
using System.Threading;
class MyTaskDemo
{
    static void Main(string[] args)
    {
        Task task = new Task(() =>
        {
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("子线程:" + i);
                Thread.Sleep(100);
            }
        });
        task.Start();
        task.Wait(); // 等待任务完成
        Console.ReadKey();
    }
}

C 多线程同步与互斥

1、lock 关键字(互斥锁)

lock 是 C 中用于实现互斥的一种方式,当一个线程获得 lock 时,其他线程必须等待,直到该线程释放 lock,这可以确保在同一时间只有一个线程访问共享资源。

using System;
using System.Threading;
class MutexExample
{
    private static Mutex _mutex = new Mutex(); // 创建互斥锁对象
    private static int _count = 0; // 计数器,用于模拟共享资源
    static void Main(string[] args)
    {
        Thread thread1 = new Thread(UpdateCount); // 创建两个线程
        Thread thread2 = new Thread(UpdateCount); // ... 其他线程也可以类似创建和管理多个线程和锁定机制以防止数据竞争和不一致的状态,在实际开发中,通常会使用更高级的并发控制技术,如锁、信号量、条件变量等,可以使用 Monitor.TryEnter()/Monitor.Exit() 或者 Interlocked.Increment()/Interlocked.Decrement()来替代 lock,这样可以减少死锁的发生概率,并且使得代码更加简洁易读。
0