(一)CSharp-多线程编程

一、进程与线程

1、进程
一个正在运行的程序的实例,是系统进行调度和资源分配的一个独立单位。

进程由两部分能组成:

(1)操作系统用来管理进程的内核对象。内核对象是系统的一种资源,系统对象一旦产生,任何应用程序都可以开启并使用该对象。系统给予内核对象一个计数值作为管理之用。

(2)操作系统用来管理地址的空间。它包含所有可执行模块或 DLL 模块的代码和数据。它还包含动态内存分配的空间,如线程堆栈和堆栈分配空间。

进程分为系统进程和用户进程。程序是静止的,二进程是动态的。

2、线程

一段完成某个特定功能的代码,是程序中的一个执行流。

线程由两个部分组成:

(1)操作系统用来管理线程的内核对象。内核对象也是系统用来存放线程统计信息的地方。
(2)另一个是线程的堆栈。它用于维护线程在执行代码时需要的所有函数的参数的局部变量。

线程是在它的进程地址空间中执行代码的,并且在地址的进程空间中对数据进行操作。

线程分为用户界面线程和工作线程。

1、线程与进程的比较

多进程是指在操作系统中能同时运行多个任务程序。

(1)进程的特点是允许计算机同时运行两个或更多的程序。

(2)在基于线程的多任务处理环境中,线程是最小的处理单位。

(3)多个进程的内部数据和状态都是完全独立的,而多线程共享一块内存空间和一组系统资源,有可能互相影响。

(4)线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程的切换负担要小。

二、C# 中多线程的开发

1、线程操作

System.Threading.Thread

表-Thread 类的常用属性

属性名 描述
CurrentThread 只读属性,获取当前正在运行的线程
IsAlive 判断线程是否处于活动状态
IsBackground 获取或设置一个值,该值指示某个线程是否为后台线程
IsThreadPoolThread 获取一个值,该值指示线程是否属于托管线程池
Name 获取或设置线程的名称
Priority ThreadPriority 枚举类型,代表线程的优先级,如:Normal、AboveNormal、BelowNormal、Highest、Lowest
ThreadState ThreadState 枚举类型,代表当前线程的状态,如:Unstarted、Running、WaitSleepJoin、Stopped、AbortRequested、Susppended、Aborted 等

表-Thread 类的常用方法

方法名 描述
GetDomain() 返回当前线程所在的应用程序域
GetDomainID() 返回当前线程所在的应用程序域的 ID
Start() 启动线程的执行
Suspend() 挂起线程,或者如果线程已挂起,则不起作用
Resume() 继续已挂起的线程
Interrupt() 终止处于 Wait 或者 Sleep 或者 Join 线程状态的线程
Join() 阻塞调用线程,直到某个线程终止时为止
Sleep() 将当前线程阻塞指定的毫秒数
Abort() 终止一个线程的运行
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值