当前位置: 首页 > news >正文

《C#线程参考手册》读书笔记(二):.NET中的线程

第二章 .NET中的线程

.NET有关线程操作都在System.Threading 命名空间,查看MSDN可以看出以下信息:

System.Threading 命名空间提供一些使得可以进行多线程编程的类和接口。 除了同步的线程活动和访问选件类外数据(Mutex、Monitor、Interlocked,AutoResetEvent,等等),此命名空间包括允许您使用由系统提供的线程池的 ThreadPool 选件类,因此,在线程池中执行回调方法的 Timer 选件类线程。


 

 说明
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持AbandonedMutexException当某个线程获取由另一个线程放弃(即在未释放的情况下退出)的 Mutex 对象时引发的异常。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持AutoResetEvent通知正在等待的线程已发生事件。 此类不能被继承。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持Barrier使多个任务能够采用并行方式依据某种算法在多个阶段中协同工作。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持BarrierPostPhaseExceptionBarrier 阶段后操作失败时引发的异常。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持CancellationTokenSource通知 CancellationToken,告知其应被取消。
公共类CompressedStack提供方法用于设置和捕获当前线程上的压缩堆栈。 此类不能被继承。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持CountdownEvent表示在计数变为零时处于有信号状态的同步基元。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持EventWaitHandle表示一个线程同步事件。
公共类ExecutionContext管理当前线程的执行上下文。 此类不能被继承。
公共类HostExecutionContext在线程之间封装并传播宿主执行上下文。
公共类HostExecutionContextManager提供使公共语言运行时宿主可以参与执行上下文的流动(或移植)的功能。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持Interlocked为多个线程共享的变量提供原子操作。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持LazyInitializer提供延迟初始化例程。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持LockRecursionException当进入锁定状态的递归与此锁定的递归策略不兼容时引发的异常。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持ManualResetEvent通知一个或多个正在等待的线程已发生事件。 此类不能被继承。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持ManualResetEventSlim提供 ManualResetEvent 的简化版本。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持Monitor提供同步访问对象的机制。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持Mutex一个同步基元,也可用于进程间同步。
公共类Overlapped提供一个 Win32 OVERLAPPED 结构的托管表示形式,包括将信息从 Overlapped 实例传输到 NativeOverlapped 结构的方法。
公共类ReaderWriterLock定义支持单个写线程和多个读线程的锁。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持ReaderWriterLockSlim表示用于管理资源访问的锁定状态,可实现多线程读取或进行独占式写入访问。
公共类RegisteredWaitHandle表示在调用 RegisterWaitForSingleObject 时已注册的句柄。 此类不能被继承。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持Semaphore限制可同时访问某一资源或资源池的线程数。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持SemaphoreFullException对计数已达到最大值的信号量调用 Semaphore.Release 方法时引发的异常。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持SemaphoreSlim对可同时访问资源或资源池的线程数加以限制的 Semaphore 的轻量替代。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持SynchronizationContext提供在各种同步模型中传播同步上下文的基本功能。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持SynchronizationLockException当某个方法请求调用方拥有给定 Monitor 上的锁时将引发该异常,而且由不拥有该锁的调用方调用此方法。
公共类受 可移植类库 支持Thread创建并控制线程,设置其优先级并获取其状态。
公共类ThreadAbortException当对 Abort 方法发出调用时引发的异常。 此类不能被继承。
公共类ThreadExceptionEventArgs为 ThreadException 事件提供数据。
公共类ThreadInterruptedException中断处于等待状态的 Thread 时引发的异常。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持ThreadLocal<T>提供数据的线程本地存储。
公共类受 可移植类库 支持ThreadPool提供一个线程池,该线程池可用于执行任务、发送工作项、处理异步 I/O、代表其他线程等待以及处理计时器。
公共类ThreadStartException当基础操作系统线程已启动但该线程尚未准备好执行用户代码前,托管线程中出现错误,则会引发异常。
公共类ThreadStateException当 Thread 处于对方法调用无效的 ThreadState 时引发的异常。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持Timeout包含指定无限超时间隔的常数。 此类不能被继承。
公共类受 可移植类库 支持Timer提供以指定的时间间隔执行方法的机制。 此类不能被继承。
公共类受 适用于 Windows 应用商店应用的 .NET 支持Volatile包含执行的易失存储器操作方法。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持WaitHandle封装等待对共享资源的独占访问的操作系统特定的对象。
公共类受 可移植类库 支持受 适用于 Windows 应用商店应用的 .NET 支持WaitHandleCannotBeOpenedException在尝试打开不存在的系统互斥体或信号量时引发的异常。

本书第二章重点介绍了Thread 这个类

Thread 类

创建并控制线程,设置其优先级并获取其状态。

构造函数


 名称说明
公共方法Thread(ParameterizedThreadStart)初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托。
公共方法由 XNA Framework 提供支持Thread(ThreadStart)初始化 Thread 类的新实例。
公共方法Thread(ParameterizedThreadStart, Int32)初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托,并指定线程的最大堆栈大小。
公共方法由 XNA Framework 提供支持Thread(ThreadStart, Int32)初始化 Thread 类的新实例,指定线程的最大堆栈大小。

 属性


 名称说明
公共属性ApartmentState已过时。 获取或设置此线程的单元状态。
公共属性静态成员CurrentContext获取线程正在其中执行的当前上下文。
公共属性受 可移植类库 支持CurrentCulture获取或设置当前线程的区域性。
公共属性静态成员CurrentPrincipal获取或设置线程的当前负责人(对基于角色的安全性而言)。
公共属性静态成员由 XNA Framework 提供支持受 可移植类库 支持CurrentThread获取当前正在运行的线程。
公共属性受 可移植类库 支持CurrentUICulture获取或设置资源管理器使用的当前区域性以便在运行时查找区域性特定的资源。
公共属性ExecutionContext获取一个 ExecutionContext 对象,该对象包含有关当前线程的各种上下文的信息。
公共属性IsAlive获取一个值,该值指示当前线程的执行状态。
公共属性由 XNA Framework 提供支持IsBackground获取或设置一个值,该值指示某个线程是否为后台线程。
公共属性IsThreadPoolThread获取一个值,该值指示线程是否属于托管线程池。
公共属性由 XNA Framework 提供支持受 可移植类库 支持ManagedThreadId获取当前托管线程的唯一标识符。
公共属性由 XNA Framework 提供支持Name获取或设置线程的名称。
公共属性由 XNA Framework 提供支持Priority获取或设置一个值,该值指示线程的调度优先级。
公共属性ThreadState

获取一个值,该值包含当前线程的状态。 

方法


 名称说明
公共方法由 XNA Framework 提供支持Abort()在调用此方法的线程上引发 ThreadAbortException,以开始终止此线程的过程。调用此方法通常会终止线程。
公共方法由 XNA Framework 提供支持Abort(Object)在调用此方法的线程上引发 ThreadAbortException,以开始终止此线程并提供有关线程终止的异常信息的过程。调用此方法通常会终止线程。
公共方法静态成员由 XNA Framework 提供支持AllocateDataSlot在所有的线程上分配未命名的数据槽。为了获得更好的性能,请改用以 ThreadStaticAttribute 特性标记的字段。
公共方法静态成员由 XNA Framework 提供支持AllocateNamedDataSlot在所有线程上分配已命名的数据槽。为了获得更好的性能,请改用以 ThreadStaticAttribute 特性标记的字段。
公共方法静态成员BeginCriticalRegion通知宿主执行将要进入一个代码区域,在该代码区域内线程中止或未经处理的异常的影响可能会危害应用程序域中的其他任务。
公共方法静态成员BeginThreadAffinity通知宿主托管代码将要执行依赖于当前物理操作系统线程的标识的指令。
公共方法DisableComObjectEagerCleanup对于当前线程关闭运行时可调用包装 (RCW) 的自动清理。
公共方法静态成员EndCriticalRegion通知宿主执行将要进入一个代码区域,在该代码区域内线程中止或未经处理的异常仅影响当前任务。
公共方法静态成员EndThreadAffinity通知宿主托管代码已执行完依赖于当前物理操作系统线程的标识的指令。
公共方法由 XNA Framework 提供支持受 可移植类库 支持Equals(Object)确定指定的对象是否等于当前对象。 (继承自 Object。)
公共方法静态成员由 XNA Framework 提供支持FreeNamedDataSlot为进程中的所有线程消除名称与槽之间的关联。为了获得更好的性能,请改用以 ThreadStaticAttribute 特性标记的字段。
公共方法GetApartmentState返回一个 ApartmentState 值,该值指示单元状态。
公共方法GetCompressedStack已过时。返回一个 CompressedStack 对象,该对象可用于捕获当前线程的堆栈。
公共方法静态成员由 XNA Framework 提供支持GetData在当前线程的当前域中从当前线程上指定的槽中检索值。为了获得更好的性能,请改用以 ThreadStaticAttribute 特性标记的字段。
公共方法静态成员由 XNA Framework 提供支持GetDomain返回当前线程正在其中运行的当前域。
公共方法静态成员GetDomainID返回唯一的应用程序域标识符。
公共方法由 XNA Framework 提供支持受 可移植类库 支持GetHashCode返回当前线程的哈希代码。 (重写 Object.GetHashCode()。)

在 XNA Framework 3.0 中,此成员继承自 Object.GetHashCode().

在 可移植类库 可移植类库 中,此成员继承自 Object.GetHashCode().
公共方法静态成员由 XNA Framework 提供支持GetNamedDataSlot查找已命名的数据槽。为了获得更好的性能,请改用以 ThreadStaticAttribute 特性标记的字段。
公共方法由 XNA Framework 提供支持受 可移植类库 支持GetType获取当前实例的 Type。 (继承自 Object。)
公共方法Interrupt中断处于 WaitSleepJoin 线程状态的线程。
公共方法由 XNA Framework 提供支持Join()在继续执行标准的 COM 和 SendMessage 消息泵处理期间,阻塞调用线程,直到某个线程终止为止。
公共方法由 XNA Framework 提供支持Join(Int32)在继续执行标准的 COM 和 SendMessage 消息泵处理期间,阻塞调用线程,直到某个线程终止或经过了指定时间为止。
公共方法Join(TimeSpan)在继续执行标准的 COM 和 SendMessage 消息泵处理期间,阻塞调用线程,直到某个线程终止或经过了指定时间为止。
公共方法静态成员由 XNA Framework 提供支持受 可移植类库 支持MemoryBarrier按如下方式同步内存存取:执行当前线程的处理器在对指令重新排序时,不能采用先执行 MemoryBarrier 调用之后的内存存取,再执行 MemoryBarrier 调用之前的内存存取的方式。
公共方法静态成员ResetAbort取消为当前线程请求的 Abort。
公共方法Resume已过时。继续已挂起的线程。
公共方法SetApartmentState在线程启动前设置其单元状态。
公共方法SetCompressedStack已过时。对当前线程应用捕获的 CompressedStack。
公共方法静态成员由 XNA Framework 提供支持SetData在当前正在运行的线程上为此线程的当前域在指定槽中设置数据。为了获得更好的性能,请改用以 ThreadStaticAttribute 特性标记的字段。
公共方法由 XNA Framework 提供支持SetProcessorAffinity在用于 Xbox 360 的 .NET Compact Framework 中,为托管线程设置处理器关联。运行线程的处理器取决于处理器关联。
公共方法静态成员由 XNA Framework 提供支持Sleep(Int32)将当前线程挂起指定的时间。
公共方法静态成员Sleep(TimeSpan)将当前线程阻塞指定的时间。
公共方法静态成员SpinWait导致线程等待由 iterations 参数定义的时间量。
公共方法由 XNA Framework 提供支持Start()导致操作系统将当前实例的状态更改为 ThreadState.Running。
公共方法Start(Object)使操作系统将当前实例的状态更改为 ThreadState.Running,并选择提供包含线程执行的方法要使用的数据的对象。
公共方法Suspend已过时。挂起线程,或者如果线程已挂起,则不起作用。
公共方法由 XNA Framework 提供支持受 可移植类库 支持ToString返回表示当前对象的字符串。 (继承自 Object。)
公共方法TrySetApartmentState在线程启动前设置其单元状态。
公共方法静态成员VolatileRead(Byte)读取字段值。无论处理器的数目或处理器缓存的状态如何,该值都是由计算机的任何处理器写入的最新值。
公共方法静态成员VolatileRead(Double)读取字段值。无论处理器的数目或处理器缓存的状态如何,该值都是由计算机的任何处理器写入的最新值。
公共方法静态成员VolatileRead(Int16)读取字段值。无论处理器的数目或处理器缓存的状态如何,该值都是由计算机的任何处理器写入的最新值。
公共方法静态成员VolatileRead(Int32)读取字段值。无论处理器的数目或处理器缓存的状态如何,该值都是由计算机的任何处理器写入的最新值。
公共方法静态成员VolatileRead(Int64)读取字段值。无论处理器的数目或处理器缓存的状态如何,该值都是由计算机的任何处理器写入的最新值。
公共方法静态成员VolatileRead(IntPtr)读取字段值。无论处理器的数目或处理器缓存的状态如何,该值都是由计算机的任何处理器写入的最新值。
公共方法静态成员VolatileRead(Object)读取字段值。无论处理器的数目或处理器缓存的状态如何,该值都是由计算机的任何处理器写入的最新值。
公共方法静态成员VolatileRead(SByte)读取字段值。无论处理器的数目或处理器缓存的状态如何,该值都是由计算机的任何处理器写入的最新值。
公共方法静态成员VolatileRead(Single)读取字段值。无论处理器的数目或处理器缓存的状态如何,该值都是由计算机的任何处理器写入的最新值。
公共方法静态成员VolatileRead(UInt16)读取字段值。无论处理器的数目或处理器缓存的状态如何,该值都是由计算机的任何处理器写入的最新值。
公共方法静态成员VolatileRead(UInt32)读取字段值。无论处理器的数目或处理器缓存的状态如何,该值都是由计算机的任何处理器写入的最新值。
公共方法静态成员VolatileRead(UInt64)读取字段值。无论处理器的数目或处理器缓存的状态如何,该值都是由计算机的任何处理器写入的最新值。
公共方法静态成员VolatileRead(UIntPtr)读取字段值。无论处理器的数目或处理器缓存的状态如何,该值都是由计算机的任何处理器写入的最新值。
公共方法静态成员VolatileWrite(Byte, Byte)立即向字段写入一个值,以使该值对计算机中的所有处理器都可见。
公共方法静态成员VolatileWrite(Double, Double)立即向字段写入一个值,以使该值对计算机中的所有处理器都可见。
公共方法静态成员VolatileWrite(Int16, Int16)立即向字段写入一个值,以使该值对计算机中的所有处理器都可见。
公共方法静态成员VolatileWrite(Int32, Int32)立即向字段写入一个值,以使该值对计算机中的所有处理器都可见。
公共方法静态成员VolatileWrite(Int64, Int64)立即向字段写入一个值,以使该值对计算机中的所有处理器都可见。
公共方法静态成员VolatileWrite(IntPtr, IntPtr)立即向字段写入一个值,以使该值对计算机中的所有处理器都可见。
公共方法静态成员VolatileWrite(Object, Object)立即向字段写入一个值,以使该值对计算机中的所有处理器都可见。
公共方法静态成员VolatileWrite(SByte, SByte)立即向字段写入一个值,以使该值对计算机中的所有处理器都可见。
公共方法静态成员VolatileWrite(Single, Single)立即向字段写入一个值,以使该值对计算机中的所有处理器都可见。
公共方法静态成员VolatileWrite(UInt16, UInt16)立即向字段写入一个值,以使该值对计算机中的所有处理器都可见。
公共方法静态成员VolatileWrite(UInt32, UInt32)立即向字段写入一个值,以使该值对计算机中的所有处理器都可见。
公共方法静态成员VolatileWrite(UInt64, UInt64)立即向字段写入一个值,以使该值对计算机中的所有处理器都可见。
公共方法静态成员VolatileWrite(UIntPtr, UIntPtr)立即向字段写入一个值,以使该值对计算机中的所有处理器都可见。
公共方法静态成员Yield导致调用线程执行准备好在当前处理器上运行的另一个线程。由操作系统选择要执行的线程。

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/h20064528/archive/2013/01/07/2849262.html

相关文章:

  • tomcat创建用户名
  • NO.52 使用禅道来进行产品管理
  • 分享:Jython设置默认编码
  • SAP中的权限与破解
  • jquery获取点击控件的绝对位置
  • 北京职工因支付房租,首次提取住房公积金时应提供哪些相关证明材料
  • 当调用 Remove 失效时 [C#]
  • Preftest性能测试工作室2012年资料汇总
  • 既有算法,何必亲自写作?
  • php之session文件回收
  • 陶哲轩实分析习题8.5.6
  • 新作获京东网双重推荐,成IT媒体新焦点
  • 屌丝男关于游戏市场的一些想法
  • ios平台调用WCF
  • C# WinForm通过WebClient实现文件上传下载
  • Angularjs之国际化
  • co模块的前端实现
  • PermissionScope Swift4 兼容问题
  • Promise面试题,控制异步流程
  • Spring Boot MyBatis配置多种数据库
  • 从输入URL到页面加载发生了什么
  • 力扣(LeetCode)21
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 设计模式(12)迭代器模式(讲解+应用)
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 【干货分享】dos命令大全
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #vue3 实现前端下载excel文件模板功能
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • .NET Core中的去虚
  • .NET Framework杂记
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .net web项目 调用webService
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .net下的富文本编辑器FCKeditor的配置方法
  • .NET中GET与SET的用法
  • :O)修改linux硬件时间
  • ?
  • [ C++ ] STL_list 使用及其模拟实现
  • [1127]图形打印 sdutOJ
  • [Asp.net MVC]Asp.net MVC5系列——Razor语法
  • [bzoj 3124][sdoi 2013 省选] 直径
  • [bzoj1912]异象石(set)
  • [C++]C++入门--引用
  • [C++]STL之map