第二章 .NET中的线程

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

Timer 选件类线程。


 

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

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

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

构造函数


  名称 说明
Thread(ParameterizedThreadStart) Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托。
Thread(ThreadStart) Thread 类的新实例。
Thread(ParameterizedThreadStart, Int32) Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托,并指定线程的最大堆栈大小。
Thread(ThreadStart, Int32) Thread 类的新实例,指定线程的最大堆栈大小。

 属性


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

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

方法


  名称 说明
Abort() 调用此方法通常会终止线程。
Abort(Object) 调用此方法通常会终止线程。
AllocateDataSlot ThreadStaticAttribute 特性标记的字段。
AllocateNamedDataSlot ThreadStaticAttribute 特性标记的字段。
BeginCriticalRegion 通知宿主执行将要进入一个代码区域,在该代码区域内线程中止或未经处理的异常的影响可能会危害应用程序域中的其他任务。
BeginThreadAffinity 通知宿主托管代码将要执行依赖于当前物理操作系统线程的标识的指令。
DisableComObjectEagerCleanup 对于当前线程关闭运行时可调用包装 (RCW) 的自动清理。
EndCriticalRegion 通知宿主执行将要进入一个代码区域,在该代码区域内线程中止或未经处理的异常仅影响当前任务。
EndThreadAffinity 通知宿主托管代码已执行完依赖于当前物理操作系统线程的标识的指令。
Equals(Object) Object。)
FreeNamedDataSlot ThreadStaticAttribute 特性标记的字段。
GetApartmentState ApartmentState 值,该值指示单元状态。
GetCompressedStack 已过时。CompressedStack 对象,该对象可用于捕获当前线程的堆栈。
GetData ThreadStaticAttribute 特性标记的字段。
GetDomain 返回当前线程正在其中运行的当前域。
GetDomainID 返回唯一的应用程序域标识符。
GetHashCode GetHashCode().
GetNamedDataSlot ThreadStaticAttribute 特性标记的字段。
GetType Object。)
Interrupt WaitSleepJoin 线程状态的线程。
Join() 在继续执行标准的 COM 和 SendMessage 消息泵处理期间,阻塞调用线程,直到某个线程终止为止。
Join(Int32) 在继续执行标准的 COM 和 SendMessage 消息泵处理期间,阻塞调用线程,直到某个线程终止或经过了指定时间为止。
Join(TimeSpan) 在继续执行标准的 COM 和 SendMessage 消息泵处理期间,阻塞调用线程,直到某个线程终止或经过了指定时间为止。
MemoryBarrier MemoryBarrier 调用之前的内存存取的方式。
ResetAbort Abort
Resume 已过时。继续已挂起的线程。
SetApartmentState 在线程启动前设置其单元状态。
SetCompressedStack 已过时。CompressedStack
SetData ThreadStaticAttribute 特性标记的字段。
SetProcessorAffinity 运行线程的处理器取决于处理器关联。
Sleep(Int32) 将当前线程挂起指定的时间。
Sleep(TimeSpan) 将当前线程阻塞指定的时间。
SpinWait iterations 参数定义的时间量。
Start() ThreadState.Running
Start(Object) ThreadState.Running,并选择提供包含线程执行的方法要使用的数据的对象。
Suspend 已过时。挂起线程,或者如果线程已挂起,则不起作用。
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 由操作系统选择要执行的线程。

 

 

 

 

 

 

 

 

 

相关文章:

  • 2021-05-31
  • 2021-12-13
  • 2022-01-21
  • 2021-04-30
  • 2021-06-11
  • 2022-02-03
  • 2021-12-31
猜你喜欢
  • 2021-08-01
  • 2022-03-08
  • 2022-02-08
  • 2022-12-23
  • 2021-09-22
  • 2022-02-13
  • 2021-08-17
相关资源
相似解决方案