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

第二章 .NET中的线程

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

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


 说明
公共类 受 可移植类库 支持 受 适用于 Windows 应用商店应用的 .NET 支持 AbandonedMutexException 当某个线程获取由另一个线程放弃(即在未释放的情况下退出)的 Mutex 对象时引发的异常。
公共类 受 可移植类库 支持 受 适用于 Windows 应用商店应用的 .NET 支持 AutoResetEvent 通知正在等待的线程已发生事件。 此类不能被继承。
公共类 受 可移植类库 支持 受 适用于 Windows 应用商店应用的 .NET 支持 Barrier 使多个任务能够采用并行方式依据某种算法在多个阶段中协同工作。
公共类 受 可移植类库 支持 受 适用于 Windows 应用商店应用的 .NET 支持 BarrierPostPhaseException Barrier 阶段后操作失败时引发的异常。
公共类 受 可移植类库 支持 受 适用于 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/p/2849262.html