线程

来源:互联网 发布:excel2016查找重复数据 编辑:程序博客网 时间:2024/06/05 05:45

使用线程有几个原因。在应用程序中进行网络调用需要一定的时间。用户不希望在安装用户界面时只是等待,直到服务器返回一个响应为止。用户可以在这个过程执行其他一些操作,甚至取消发送给服务器的请求。这些都可以使用线程来实现。

对于所用需要等待的操作,例如文件、数据库或网络访问的启动都需要一定的时间,此时就可以启动一个新线程,完成其它任务。即使是处理密集型的任务,线程也是有帮助的。一个进程的多个线程可以同时运行在不同的CPU上,或多个和核心CPU的不同核心上。

还必须注意运行多个线程的一些问题。它们可以同时运行,但如果线程访问相同的数据,就很容易出问题。必须实现同步机制

 线程是程序中独立的指令流。使用C#编写任何程序时,都有一个入口:Main()方法。程序从Main()方法的第一条语句开始执行,直到这个方法返回为止。这个程序机构非常适合于一个可以识别的任务序列的程序,但程序常常需要同时完成多个任务。

 

进程包含资源,例如window句柄、文件系统句柄或其它核心对象。每个进程都分配了虚拟内存。一个进程至少包含一个线程。操作系统会调度线程。线程有一个优先级、正在处理的程序的位置计数器、一个存储其本地变量的堆栈。每个线程都有自己的堆栈,但程序代码的内存和堆由一个进程的所有线程共享。这使一个进程中的所有线程之间的通信非常快——该进程的所有线程都寻址相同的虚拟内存。但是,这也使处理比较困难,因为多个线程可以修改同一个内存位置。

进程管理的资源包括虚拟内存和Window句柄,其中至少包含一个线程。线程是运行程序所必需的。