网络游戏服务器断编程学习之多线程
2017-09-08 11:06
357 查看
1.进程:进程通常被定义为一个正在运行的程序的实例,它由两部分组成:
①操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方。
②地址空间,它包含所有可执行模块或DLL模块的代码和数据。它还包含动态内存分配的空间。如线程堆栈和堆分配空间。
2.实际上,单个进程可能包含若干个线程,所有这些线程都"同时"执行进程地址空间中的代码。
3.当创建一个进程时,系统会自动创建它的第一个线程,称为主线程。然后,该线程可以创建其他线程,而这些线程又能创建更多的线程。
4.进程的生命周期:一般来说进程有3种状态:就绪、执行、等待
过程描述:进程被创建后是在内存中处于就绪状态,所谓就绪状态就是具备除了CPU之外的所有资源,一旦占有了CPU,就变成了执行状态;执行中如果需要等待外围设备输入数据,则进程就变为等待状态,操作系统又会从就绪状态队列中调度一个进程占有CPU;等到数据到来后,等待状态的进程又被唤醒成为就绪状态。
5.PCB(进程控制块):PCB是进程的唯一标志,在其中记录了进程的全部信息,它是一种记录型的数据结构,相当于进程的档案。
--------------------------------------------------------------------------------
6.线程:线程就是在某种程度上相互隔离的、独立运行的程序。它由两部分组成:
①线程的内核对象
操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。
②线程堆栈
线和堆栈用于维护线程在执行代码时需要的所有函数参数和局部变量。
7.线程和进程的区别:
子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。多进程主要是为了节约时间,充分利用CPU,多线程使用则根据具体情况而定。
进程是不活泼的,从来不执行任何东西,它只是线程的容器。线程总是在某个进程环境中创建的,而且它的整个寿命期都在该进程中。这意味着线程在它的进程地址空间中执行代码,并且在进程的地址空间中对数据进行操作。
8.线程优先级:线程优先级决定了每个线程在运行时的优先顺序。当一个线程被首次创建时,它的优先级等同于它所属进程的优先级。在单个进程内可以通过调用setThreadPriority函数改变线程的相对优先级。一个线程的优先级是相对于其所属进程的优先级而言的。
线程优先级 = 进程类基本优先级+线程相对优先级
--------------------------------------------------------------------------------
9.线程间的通信与同步
线程之间通信的两个基本问题是同步和互斥。
线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,知道消息到达时才被唤醒。
线程互斥是指对于共享的操作系统资源,在各线程访问时的排他性。当有若干个线程都要使用某一个共享资源时,任何时刻最多只允许一个线程去使用,其他要使用该资源必须等待,直到占用资源者释放该资源。
①操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方。
②地址空间,它包含所有可执行模块或DLL模块的代码和数据。它还包含动态内存分配的空间。如线程堆栈和堆分配空间。
2.实际上,单个进程可能包含若干个线程,所有这些线程都"同时"执行进程地址空间中的代码。
3.当创建一个进程时,系统会自动创建它的第一个线程,称为主线程。然后,该线程可以创建其他线程,而这些线程又能创建更多的线程。
4.进程的生命周期:一般来说进程有3种状态:就绪、执行、等待
过程描述:进程被创建后是在内存中处于就绪状态,所谓就绪状态就是具备除了CPU之外的所有资源,一旦占有了CPU,就变成了执行状态;执行中如果需要等待外围设备输入数据,则进程就变为等待状态,操作系统又会从就绪状态队列中调度一个进程占有CPU;等到数据到来后,等待状态的进程又被唤醒成为就绪状态。
5.PCB(进程控制块):PCB是进程的唯一标志,在其中记录了进程的全部信息,它是一种记录型的数据结构,相当于进程的档案。
--------------------------------------------------------------------------------
6.线程:线程就是在某种程度上相互隔离的、独立运行的程序。它由两部分组成:
①线程的内核对象
操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。
②线程堆栈
线和堆栈用于维护线程在执行代码时需要的所有函数参数和局部变量。
7.线程和进程的区别:
子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。多进程主要是为了节约时间,充分利用CPU,多线程使用则根据具体情况而定。
进程是不活泼的,从来不执行任何东西,它只是线程的容器。线程总是在某个进程环境中创建的,而且它的整个寿命期都在该进程中。这意味着线程在它的进程地址空间中执行代码,并且在进程的地址空间中对数据进行操作。
8.线程优先级:线程优先级决定了每个线程在运行时的优先顺序。当一个线程被首次创建时,它的优先级等同于它所属进程的优先级。在单个进程内可以通过调用setThreadPriority函数改变线程的相对优先级。一个线程的优先级是相对于其所属进程的优先级而言的。
线程优先级 = 进程类基本优先级+线程相对优先级
--------------------------------------------------------------------------------
9.线程间的通信与同步
线程之间通信的两个基本问题是同步和互斥。
线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,知道消息到达时才被唤醒。
线程互斥是指对于共享的操作系统资源,在各线程访问时的排他性。当有若干个线程都要使用某一个共享资源时,任何时刻最多只允许一个线程去使用,其他要使用该资源必须等待,直到占用资源者释放该资源。
相关文章推荐
- 【嵌入式Linux学习七步曲之第七篇 Linux的高级应用编程】网络编程中并发服务器的设计模式
- C++网络服务器编程的学习路线?
- Java进阶学习:网络服务器编程
- 服务器开发之linux网络编程---学习章节(二)
- 黑马程序员——Java学习总结:多线程和网络编程
- 网络编程资料总结(二)----Tcp多线程服务器和客户端的实现
- Linux网络编程 基于tcp的多线程的服务器
- linux网络编程:服务器与客户机模拟聊天(多线程)
- 关于网络编程架构的初步学习,多线程编程。
- 利用python编写设计多线程web服务器(计算机网络_自顶向下第六版_第二章1和4的编程作业)
- 网络编程学习_简单的多进程并发服务器/客户端
- linux网络编程之简单的服务器多线程
- 学习游戏服务器编程进阶篇之全球同服技术架构
- linux网络编程----->高并发--->多线程并发服务器
- Linux网络编程【三】:TCP服务器多进程和多线程(http访问)版本
- 网络编程中设计并发服务器,使用多进程 与 多线程 ,请问有什么区别?
- TCP-IP学习笔记四:NIO的网络编程-多线程实例
- 学习笔记3-多线程与网络编程
- Qt 多线程和网络编程学习
- JAVASE学习笔记:第十三章 多线程和网络编程