网络游戏服务器断编程学习之多线程
来源:互联网 发布:path软件太好了 编辑:程序博客网 时间:2024/06/05 05:03
1.进程:进程通常被定义为一个正在运行的程序的实例,它由两部分组成:
①操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方。
②地址空间,它包含所有可执行模块或DLL模块的代码和数据。它还包含动态内存分配的空间。如线程堆栈和堆分配空间。
2.实际上,单个进程可能包含若干个线程,所有这些线程都"同时"执行进程地址空间中的代码。
3.当创建一个进程时,系统会自动创建它的第一个线程,称为主线程。然后,该线程可以创建其他线程,而这些线程又能创建更多的线程。
4.进程的生命周期:一般来说进程有3种状态:就绪、执行、等待
过程描述:进程被创建后是在内存中处于就绪状态,所谓就绪状态就是具备除了CPU之外的所有资源,一旦占有了CPU,就变成了执行状态;执行中如果需要等待外围设备输入数据,则进程就变为等待状态,操作系统又会从就绪状态队列中调度一个进程占有CPU;等到数据到来后,等待状态的进程又被唤醒成为就绪状态。
5.PCB(进程控制块):PCB是进程的唯一标志,在其中记录了进程的全部信息,它是一种记录型的数据结构,相当于进程的档案。
--------------------------------------------------------------------------------
6.线程:线程就是在某种程度上相互隔离的、独立运行的程序。它由两部分组成:
①线程的内核对象
操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。
②线程堆栈
线和堆栈用于维护线程在执行代码时需要的所有函数参数和局部变量。
7.线程和进程的区别:
子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。多进程主要是为了节约时间,充分利用CPU,多线程使用则根据具体情况而定。
进程是不活泼的,从来不执行任何东西,它只是线程的容器。线程总是在某个进程环境中创建的,而且它的整个寿命期都在该进程中。这意味着线程在它的进程地址空间中执行代码,并且在进程的地址空间中对数据进行操作。
8.线程优先级:线程优先级决定了每个线程在运行时的优先顺序。当一个线程被首次创建时,它的优先级等同于它所属进程的优先级。在单个进程内可以通过调用setThreadPriority函数改变线程的相对优先级。一个线程的优先级是相对于其所属进程的优先级而言的。
线程优先级 = 进程类基本优先级+线程相对优先级
--------------------------------------------------------------------------------
9.线程间的通信与同步
线程之间通信的两个基本问题是同步和互斥。
线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,知道消息到达时才被唤醒。
线程互斥是指对于共享的操作系统资源,在各线程访问时的排他性。当有若干个线程都要使用某一个共享资源时,任何时刻最多只允许一个线程去使用,其他要使用该资源必须等待,直到占用资源者释放该资源。
- 网络游戏服务器断编程学习之多线程
- java学习之多线程编程
- Linux学习之多线程编程
- Python学习之多线程编程
- 多线程学习之多线程编程
- 学习Linux C编程之多线程编程
- iOS学习总结之多线程编程(NSThread)
- 学习笔记之多线程编程synchronized
- Linux并发服务器编程之多线程并发服务器
- 高并发服务器编程之多线程并发服务器
- Linux并发服务器编程之多线程并发服务器
- 《网络游戏服务器编程》
- Linux下socket编程之多线程TCP服务器
- iOS学习总结之多线程编程(NSThread)-线程的状态
- delphi之多线程编程
- Java之多线程编程
- delphi之多线程编程
- iOS之多线程编程
- PAT (Basic Level) Practise (中文) 1043. 输出PATest(20)
- 如何在Android Studio中创建jniLib和asset文件夹
- 高级算法日记9:图(2)
- 树回归
- ffmpeg编解码详细过程
- 网络游戏服务器断编程学习之多线程
- 449. Serialize and Deserialize BST
- iOS之《Effective Objective-C 2.0》读书笔记(42)
- Java菜鸟学习日记35
- bandit 算法资料大全
- 特定数量的商品如何在高并发下进行库存锁定 ?
- checkbox的全选
- 用户认证
- angular的ng-grid使用中遇到的一些坑