MFC第二课——Console程序、进程和线程

本文介绍了MFC中的Console程序、进程和线程概念。Console程序以main为入口,支持标准输入输出,使用Win32 API。进程的创建涉及CreateProcess、WinMain等,而线程的创建、运行与结束则包括线程对象、线程函数及ExitThread。线程优先级可通过SetThreadPriority调整。

首先感谢候俊杰先生与《深入浅出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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值