网络编程基础--多线程

本文介绍了进程与线程的概念,强调了进程作为资源分配单位和线程作为执行单位的区别。详细讲解了Thread类的属性和方法,包括创建、继续、终止线程的操作,并探讨了线程同步的重要性及多种同步机制,旨在帮助读者掌握多线程编程的基础知识。
摘要由CSDN通过智能技术生成

一、进程与线程

      1)进程被定义为一个正在运行的程序的实例,是系统进行调度和资源分配的一个独立单位。简单分为系统进程和用户进程。而程序是一段静态代码,不能申请系统资源,不能被系统调度,也不能作为单独运行的单位,因此它不占用系统的运行资源。

           线程是进程中的一个实体,自己不拥有系统资源,一个标准的线程由线程ID,当前指令指针PC,寄存器集合,堆栈组成。

       2)进程由两部分组成:

       操作系统用来管理进程的内核对象。内核对象是系统的一种资源,系统对象一旦产生,任何应用程序都可以开启并使用该对象。

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

      3)进程和线程的比较:

            (1)进程的特点是允许计算机同时运行两个或更多的程序。
            (2)在基于线程的多任务处理环境中,线程是最小的处理单位。
            (3)多个进程的内部数据和状态都是完全独立的,而多线程共享一块内存空间和一组系统资源,有可能互相影响。
            (4)线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程的切换负担要小。


二、Thread类的属性和方法

          System.Threading.Thread类是控制线程最常用的类。以下列举常用的属性和方法

         属性:

CurrentThread只读属性,获取当前正在运行对的线程
IsAlive判断线程是否处于活动状态
IsBackground获取或设置一个值,该值指示某个线程是否为后台线程
IsThreadPoolThread获取一个值,该值指示线程是否属于托管线程池
Name获取或设置线程的名称
Priority代表优先级:Normal,AboveNormal,Highest,Lowest
ThreadState代表状态:Unstarted,Running,Aborted,Suspended

    方法:

GetDomain()返回当前线程所在的应用程序域
Start()启动线程的执行
Suspend()挂起
Resume()继续已挂起的线程
Interrupt()终止处于Wait或Sleep或Join状态的线程
Join()阻塞线程,知道某个线程终止为止
Sleep()将当前线程阻塞,单位毫秒
Abort()终止,若已终止,则不能通过Start()来启
Wait()等待重新执行



三、线程操作

       (1)创建线程Thread t1 = new Thread(new ThreadStart(Thread1));    //创建线程
                                            t1.Start( );                                                                        //启动线程

       (2)挂起线程: if (t1.ThreadState == ThreadState.Running)         //判断线程是否正在运行
                                   t1.Suspend( );

      (3)继续线程:if (t1.ThreadState == ThreadState.Suspended)       //判断线程是否已被挂起
                                   t1.Resume( );

      (4)终止线程:if (t1.IsAlive)                    //判断线程是否处于活动状态
                             t1.Abort( );



四、线程同步

    线程同步的方法很多,如Volatile,Mutex,Monitor,InterLocked,lock,ReadWriteLock,Semaphore

     在多线程中,线程间有时会共享存储空间,当两个或多个线程同时访问同一共享资源时,必然会出现冲突问题。

如一个线程可能尝试从一个文件中读取数据,而另一个线程则尝试在同一个文件中修改数据。在这种情况下,数据可能变一

致。针对这种问题,通常需要让一个线程彻底完成其任务后,再运行下一个线程;或者要求一个线程对共享资源访问完全结束后,

再让另一个线程访问该资源,必须保证一个共享资源一次只能被一个线程使用。实现此目的的过程称为线程同步。

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

屠变恶龙之人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值