MFC第二课——Console程序、进程和线程
来源:互联网 发布:网络系统管理专业 编辑:程序博客网 时间:2024/06/09 23:58
首先感谢候俊杰先生与《深入浅出MFC》(第二版),以下心得都来自于对该书的学习~
今天学习了Windows的Console程序、进程和线程这三个概念:
一、Console程序
说到Windows程序,一定得有WinMain、消息循环、窗口函数。
在Visual C++中可以写纯种的C/C++程序,不牵扯任何窗口、对话框、控件,那就是console程序。
DOS程序是MZ格式;Console程序则和所有的Win32程序一样,是PE格式。
撰写console程序,有几个重点请注意:
①进入点为main
②可以使用printf、scanf、cin、cout等标准输入输出装置
③可以调用与GUI无关的Win32 API
二、进程的诞生与死亡
1)shell调用CreateProcess激活App.exe。
2)系统产生一个"进程核心对象",计数值为1。
3)系统为此进程建立一个4GB地址空间。
4)加载器将必要的代码加载到上述地址空间中。
5)系统为此进程建立一个线程,称为主线程(primary thread)。线程才是CPU时间的分配对象。
6)系统调用C runtime函数库的Startup code。
7)Startup code调用App程序的WinMain函数。
8)App程序开始运行。
9)使用者关闭App主窗口,使WinMain中的消息循环结束掉,于是WinMain结束。
10)回到Startup code
11)回到系统,系统调用ExitProcess结束进程。
三、线程
1)执行程序代码,是线程的工作。当一个进程建立起来后,主线程也产生。
2)诞生与死亡
①配置"线程对象",其handle将成为CreateThread的返回值。
②设定计数值为1。
③配置线程的context(环境)。
④保留线程的堆栈。
⑤将context中的堆栈指针缓冲器(SS)和指令指针缓存器(IP)设定妥当。
⑥线程的主体——线程函数。
⑦结束:1.寿终正寝:系统调用ExitThread做善后清理工作。
2.未得善终:(1)进程结束
(2)别的线程强制以TerminateThread将它终结掉
3)线程优先级(Priority):从0(最低)到31(最高)。
指定优先级步骤:①指定"优先级等级(Priority Class)"给进程;
②指定"相对优先级"给该进程所拥有的线程。
SetThreadPriority可用于微调等级(范围是两个点数)。
等级 代码 优先级值
idle IDLE_PRLORITY_CLASS 4
normal NORMAL_PRLORITY_CLASS 9(前台)或7(后台)
high HIGH_PRLORITY_CLASS 13
realtime REALTIME_PRLORITY_CLASS 24
- MFC第二课——Console程序、进程和线程
- 第二部分—进程和线程管理
- mfc下调用console程序——四种方法
- mfc下调用console程序——CreatProcess
- MFC的进程和线程
- MFC的进程和线程
- MFC的进程和线程
- MFC的进程和线程
- MFC的进程和线程
- MFC的进程和线程
- 程序、进程和线程
- 线程、进程和程序
- 线程、进程和程序
- 线程、进程和程序
- MFC 改console程序
- VC:程序、进程和线程
- 了解程序,进程和线程
- Android-程序、进程和线程
- asterisk中 简单 语音信箱实现
- ThreadLocal
- SQL Server和Oracle数据库索引介绍
- frameset标签布局
- jsp中相关应用
- MFC第二课——Console程序、进程和线程
- 凉宫春日的消失中 紧急脱出プログラム的实现
- JavaScript表格排序(多列,不同数据类型)
- 玉自寒
- 输出文件并排序
- ARM Linux线程相关API
- 实现软件自动升级
- vc6.0常见错误fatal error C1083: Cannot open precompiled header file: 'Debug/**.pch': No such file or directory
- win7 64bit iis配置及asp+sql2005