随笔分类 - 多线程系列
摘要:.net Framework 4.0添加的一个重要功能是任务并行库(Task Parallel Library TPL),任务并行库(TPL)在两个方面对多线程进行了增强;一:简化了线程的创建和使用。二:自动利用多个处理器。任务并行库(TPL)在System.Threading.Tasks命名空间中定义,因此程序要添加对该命名空间的引用。 任务并行库(TPL)中的核心类是Task类,对于TPL来说基本执行单元由Task类而非Thread类封装,Task类不同Thread类,Task类是一个表示异步操作的抽象类,在Task类实例和执行线程之间的对应关系不一定是一对一的,因为任务的执行由任务...
阅读全文
摘要:一、线程池 线程池在多线程应用程序的初始化过程中创建线程的集合,当需要线程时,为新任务重用这些线程,而不是创建新的线程的过程。在这个过程中线程数量通常是固定的,这个数目取决于可用的内存和应用程序的需要,也可以增加线程数量。池的线程处理任务的过程是,当线程池中有线程空闲时分派的任务执行,当任务执行结束是线程被线程池回收(不是销毁),当有新的任务到来时,线程池再重用这些空闲可用的线程。 线程池常用用法如示例: View Code using System;using System.Collections.Generic;using System.Text;using System.Threa...
阅读全文
摘要:上一遍线程基本概念最后一个例子中,两个线程通过同样的方法操作一个静态变量,多次运行结果一定不会相同,分析原因是两个线程在同一时刻更新nums变量,解决这个问题的方法是在同一时刻只能一个线程能更新nums值,也就是当一个线程操作nums时候另外一个或者多个线程必须等待,直到当前线程结束结变量的操作,这样就能够安全的更新变量值确保变量值安全更新,先明白两具概念。 1.临界资源,每次只允许一个线程访问的资源,上节示例是操作nums运行减法操作的方法就属于临界资源。 2.线程同步,线程间相互协调同时或者顺序运行相关代码模块。 公共语言基础结构(Common Language Infrastr...
阅读全文
摘要:上一篇介绍了线程同步的两种方法,同步代码区和同步上下文。现在介绍第三种,手动同步。三、手动同步 .net FrameWork 提供了常见的以下几种类可用于手动同步:AutoResetEvent、ManualResetEvent、Mutex、Interlocked。 1、AutoResetEvent类。AutoResetEvent类使线程处于等待状态,直到通过调用Set()方法某事件将AutoResetEvent对象置于有信号状态为止。在AutoResetEvent事件中,如果事件有信号别的等待线程可以获得信号执行线程中工作,当获得信号的线程执行后AutoResetEvent变为无信号状...
阅读全文
摘要:什么是多线程?多线程是应用程序中多个可以并发或顺序执行的任务,这些任务共用应用程序占有的系统资源包括内存以及其它的物理资源。一、创建线程 Thread类的构造函数由四种形式,两种使用ParameterizedThreadStart 委托实例,使用这种委托初始化的线程执行的方法可以带参数,参数在线程启动时候指定,另外两种是使用ThreadStart委托实例,使用这种委托初始化Thread实例执行的线程方法不带参数;maxStackSize指定线程堆栈大小,一般不指定堆栈大小。public Thread(ParameterizedThreadStart start);public Thread(.
阅读全文

浙公网安备 33010602011771号