博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程的使用
阅读量:4642 次
发布时间:2019-06-09

本文共 2079 字,大约阅读时间需要 6 分钟。

  线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个 实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有 的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也 有、和三种基本状态。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。

线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为 。
一,  
1,下面一个简单的例子,
1   static void Main(string[] args) 2   { 3      //这里Thread 示例需要是 ThreadStart类型委托,委托可以直接指向方法,编译器会自动变成这样(new ThreadStart(show)) 4          Thread th = new Thread(show); 5          th.Start(); 6  } 7  8 public static void show() 9  {10        Console.WriteLine("你好啊");11  }

2,线程池的使用

1 ///  2         /// 结构体 3         ///  4         public struct StateInfo 5         { 6             public List
list; 7 public ManualResetEvent ManualResetEvent; 8 } 9 10 static void Main(string[] args)11 {12 var count = 3;13 //参数14 StateInfo stateInfo;15 List
listarry = new List
() { 1, 2, 3 };16 var manualEvents = new ManualResetEvent[count];17 for (int i = 0; i < count; i++)18 {19 stateInfo = new StateInfo();20 stateInfo.list = listarry;21 stateInfo.ManualResetEvent = manualEvents[i] = new ManualResetEvent(false);22 23 //压入线程池24 ThreadPool.QueueUserWorkItem(new WaitCallback(PooledFunc), stateInfo);25 }26 27 //等待线程全部完成28 WaitHandle.WaitAll(manualEvents);29 30 Console.ReadLine();31 }32 33 static object locker = new object();34 static void PooledFunc(object state)35 {36 var stateInfo = (StateInfo)state;37 38 lock (locker)39 {40 foreach (var item in stateInfo.list)41 {42 Console.WriteLine(item);43 }44 }45 }

 

 

 

转载于:https://www.cnblogs.com/luoyefeiwu/p/3658432.html

你可能感兴趣的文章
备忘录
查看>>
软件工程个人作业02
查看>>
pip install 问题
查看>>
vue-router导航守卫,限制页面访问权限
查看>>
2019 Multi-University Training Contest 1 - 1012 - NTT
查看>>
浏览器调试淘宝首页看到有趣的招聘信息
查看>>
ASP.NET Identity “角色-权限”管理 4
查看>>
[转][译]ASP.NET MVC 4 移动特性
查看>>
SOC CPU
查看>>
get_result --perl
查看>>
163镜像地址
查看>>
ehcache memcache redis 三大缓存男高音
查看>>
eclipse 快捷键Open Implementation 直接退出
查看>>
minix中管道文件和设备文件的读写
查看>>
JAXB - Annotations, Annotations for Enums: XmlEnum, XmlEnumValue
查看>>
context 插图
查看>>
文件管理器中不支持的wma歌曲也显示可以播放的音乐图标
查看>>
Java基础学习-流程控制语句
查看>>
Shell中read的常用方式
查看>>
01javascript数据类型
查看>>