孙鑫视频笔记——多线程与聊天室

来源:互联网 发布:js 变量给数组赋值 编辑:程序博客网 时间:2024/05/17 00:13

概念

进程由两部分组成:

(1)内核对象。内核对象被操作系统用来管理进程,内核对象也是系统用来存放关于进程的统计信息的地方。我们编写的应用程序是根本无法找到内核对象这个只用于系统的数据结构的,只能通过系统提供的一些函数来操作内核对象这种数据结构。

(2)地址空间。它包括所有可执行模块或Dll模块的代码和数据。它还包含动态内存分配的空间。如线程堆栈和堆分配空间。

线程也由两部分组成:

(1)线程的内核对象。操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。

(2)线程堆栈。它用于维护线程在执行代码时需要的所有参数和局部变量。

关于进程和线程的关系:

进程是不活泼的。进程从来不执行任何东西,它只是线程的容器。若要使进程完成某些操作,它必须拥有一个在它的环境中运行的线程,此线程负责执行包含在进程的地址空间中的代码。【即进程从来不执行代码,而线程负责执行代码,进程只是线程的一个容器而已。】

关于线程,必须记住:

线程总是在某个进程环境中创建。系统从进程的地址空间中分配内存,供线程的堆栈使用。新线程运行的进程环境与创建线程的某个实体的环境相同。因此新线程可以访问进程中的内核对象的所有句柄、进程中的所有内存和在这个相同的进程中的所有其他线程的堆栈。这使得单个进程中的多个线程确实能够非常容易地互相通信。

线程只有一个内核对象和一个堆栈,保留的记录很少,因此所需要的内存也很少。

操作系统为每一个运行线程安排一定的cpu时间片,系统通过一种循环的方式为线程提供时间片。如果计算机拥有多个cpu,线程就能真正意义上同时运行了。

 

0 0