C#多线程学习一
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#多线程学习一,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1644字,纯文字阅读大概需要3分钟。
内容图文
![C#多线程学习一](/upload/InfoBanner/zyjiaocheng/1067/ec08f40ec7f54880a0d6cd28405ab52b.jpg)
1、概述:C#支持多线程并行执行程序,一个线程有他单独的执行路径,能够与其他线程同时执行,一个程序是由一个单线程开始,该单线程由CLR(公共语言运行时)和操作系统创建而成,并具有多线程创建额外线程的功能。
(1)、主线程和子线程分别执行不同的任务
using System; using System.Threading; namespace MuliThreading { class Thread1 { static void Main(string[] args) { Thread t = new Thread(writeY); //为该类传入一个方法(委托) t.Start(); while (true) Console.Write("x"); } staticvoid writeY() { while (true) Console.Write("y"); } //代码解读:主线程创建了一个新线程t,t传入的是writeY方法,重复打印y,同时主线程打印x,主线程和新线程同时执行 } }
输出结果:
无限输出x和y;
(2)主线程和子线程分别执行相同的任务
using System; using System.Threading; namespace Mulithreading { class Thread2 { static void Main(string[] args) { new Thread(Go).Start(); Go(); } staticvoid Go() { for (int i = 0; i < 5; i++) { Console.Write("?"); } } //代码解读:在主线程中创建了一个子线程,主线程和子线程同时执行Go() } }
输出:
(3)主线程和子线程使用同一目标的公共实例
using System; using System.Threading; namespace Mulithreading { class Thread3 { bool done; static void Main(string[] args) { Thread3 t3 = new Thread3(); Thread t = new Thread(t3.Go); t.Start(); t3.Go(); } void Go() { if (!done) { done = true; Console.Write("done"); } } //代码解读:主线程Main()方法和在其中定义的子线程所调用的GO()方法共享以一个公共属性done,当吊用子线程时,对done的修改会影响到主线程的使用,因为两个线程在理论上讲是同时执行,但是实际上不可能精确的同时执行,所以当主线程吊用Go()方法是done为true } }
输出:done
(4)主线程和子线程使用同一目标属性可能会出现的问题
using System; using System.Threading; namespace Mulithreading { class Thread4 { bool done; static void Main(string[] args) { Thread4 t4 = new Thread4(); new Thread(t4.Go).Start(); t4.Go(); } void Go() { if (!done) { Console.Write("done"); done = true; } } //代码解读:当在主线程中吊用子线程时,注意两个线程是同时进行的,所以当子线程吊用Go()方法并执行时,主线程也同时进行吊用执行,两个线程是并行的,所以他们同时输出了done } }
输出:done done
原文:http://www.cnblogs.com/GreenLeaves/p/6340960.html
内容总结
以上是互联网集市为您收集整理的C#多线程学习一全部内容,希望文章能够帮你解决C#多线程学习一所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。