C#——多线程

简介: C#——多线程

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动是系统进行资源分配和调度的基本单位,是操作系统结构的基础。用通俗的话来讲:打开一个应用程序就是在操作系统上开启了一个进程进程之间可以相互独立运行,互不干扰。进程之间也可以相互访问、操作。

线程(Thread)是进程中的基本执行单元,操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。—条线程指的是进程中一个单一顶序的控制流,一个进程中可以并发多个线程我们目前写的程序都在主线程中。简单理解线程:就是代码从上到下运行的一条“管道”。

多线程的优点:可以同时完成多个任务;可以使程序的响应速度更快;可以让占用大量处理时间的任务或当前没有进行处理的任务定期将处理时间让给别的任务;可以随时停止任务;可以设置每个任务的优先级以优化程序性能。

线程类: Thread

需要注意的是,使用该线程类时,需要引用命名空间using System.Theading;

下面列举 Thread 类的一些常用属性和方法:

CurrentContext   获取线程正在其中执行的当前上下文。
CurrentCulture   获取或设置当前线程的区域性。
CurrentPrincipal   获取或设置线程的当前负责人(对基于角色的安全性而言)。
CurrentThread   获取当前正在运行的线程。
CurrentUICulture   获取或设置资源管理器使用的当前区域性以便在运行时查找区域性特定的资源。
ExecutionContext   获取一个 ExecutionContext 对象,该对象包含有关当前线程的各种上下文的信息。
IsAlive   获取一个值,该值指示当前线程的执行状态。
IsBackground   获取或设置一个值,该值指示某个线程是否为后台线程。
IsThreadPoolThread   获取一个值,该值指示线程是否属于托管线程池。
ManagedThreadId   获取当前托管线程的唯一标识符。
Name   获取或设置线程的名称。
Priority   获取或设置一个值,该值指示线程的调度优先级。
ThreadState   获取一个值,该值包含当前线程的状态。
public void Abort()  
在调用此方法的线程上引发 ThreadAbortException,以开始终止此线程的过程。调用此方法通常会终止线程。
public static LocalDataStoreSlot AllocateDataSlot()  
在所有的线程上分配未命名的数据槽。为了获得更好的性能,请改用以 ThreadStaticAttribute 属性标记的字段。
public static LocalDataStoreSlot AllocateNamedDataSlot( string name)  
在所有线程上分配已命名的数据槽。为了获得更好的性能,请改用以 ThreadStaticAttribute 属性标记的字段。
public static void BeginCriticalRegion()  
通知主机执行将要进入一个代码区域,在该代码区域内线程中止或未经处理的异常的影响可能会危害应用程序域中的其他任务。
public static void BeginThreadAffinity()  
通知主机托管代码将要执行依赖于当前物理操作系统线程的标识的指令。
public static void EndCriticalRegion()  
通知主机执行将要进入一个代码区域,在该代码区域内线程中止或未经处理的异常仅影响当前任务。
public static void EndThreadAffinity()  
通知主机托管代码已执行完依赖于当前物理操作系统线程的标识的指令。
public static void FreeNamedDataSlot(string name)  
为进程中的所有线程消除名称与槽之间的关联。为了获得更好的性能,请改用以 ThreadStaticAttribute 属性标记的字段。
public static Object GetData( LocalDataStoreSlot slot )  
在当前线程的当前域中从当前线程上指定的槽中检索值。为了获得更好的性能,请改用以 ThreadStaticAttribute 属性标记的字段。
public static AppDomain GetDomain()  
返回当前线程正在其中运行的当前域。


目录
相关文章
|
7月前
|
SQL 开发框架 安全
C#编程与多线程处理
【4月更文挑战第21天】探索C#多线程处理,提升程序性能与响应性。了解C#中的Thread、Task类及Async/Await关键字,掌握线程同步与安全,实践并发计算、网络服务及UI优化。跟随未来发展趋势,利用C#打造高效应用。
210 3
|
7月前
|
安全 编译器 C#
C#学习相关系列之多线程---lock线程锁的用法
C#学习相关系列之多线程---lock线程锁的用法
|
7月前
|
Java 调度 C#
C#学习系列相关之多线程(一)----常用多线程方法总结
C#学习系列相关之多线程(一)----常用多线程方法总结
|
4月前
|
数据采集 XML JavaScript
C# 中 ScrapySharp 的多线程下载策略
C# 中 ScrapySharp 的多线程下载策略
|
3月前
|
安全 数据库连接 API
C#一分钟浅谈:多线程编程入门
在现代软件开发中,多线程编程对于提升程序响应性和执行效率至关重要。本文从基础概念入手,详细探讨了C#中的多线程技术,包括线程创建、管理及常见问题的解决策略,如线程安全、死锁和资源泄露等,并通过具体示例帮助读者理解和应用这些技巧,适合初学者快速掌握C#多线程编程。
88 0
|
4月前
|
安全 C# 开发者
【C# 多线程编程陷阱揭秘】:小心!那些让你的程序瞬间崩溃的多线程数据同步异常问题,看完这篇你就能轻松应对!
【8月更文挑战第18天】多线程编程对现代软件开发至关重要,特别是在追求高性能和响应性方面。然而,它也带来了数据同步异常等挑战。本文通过一个简单的计数器示例展示了当多个线程无序地访问共享资源时可能出现的问题,并介绍了如何使用 `lock` 语句来确保线程安全。此外,还提到了其他同步工具如 `Monitor` 和 `Semaphore`,帮助开发者实现更高效的数据同步策略,以达到既保证数据一致性又维持良好性能的目标。
58 0
|
6月前
|
并行计算 算法 C#
C# Mandelbrot和Julia分形图像生成程序更新到2010-9-14版 支持多线程计算 多核处理器
此文档是一个关于分形图像生成器的介绍,作者分享了个人开发的M-J算法集成及色彩创新,包括源代码和历史版本。作者欢迎有兴趣的读者留言交流,并提供了邮箱(delacroix_xu@sina.com)以分享资源。文中还展示了程序的发展历程,如增加了真彩色效果、圈选放大、历史记录等功能,并分享了几幅精美的分形图像。此外,还提到了程序的新特性,如导入ini文件批量输出图像和更新一批图片的功能。文档末尾附有多张程序生成的高分辨率分形图像示例。
|
6月前
|
大数据 C#
C#实现多线程的几种方式
C#实现多线程的几种方式
|
7月前
|
安全 Java C#
C#多线程详解
C#多线程详解
68 0