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(); } }
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,这样可以减少死锁的发生概率,并且使得代码更加简洁易读。
文章标题:c#多线程教程
URL地址:http://www.shufengxianlan.com/qtweb/news32/312782.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联