核心编程边读边小结(1)

 读到这部分是关于线程的,从基础到优先级、关联性到后来的同步,内容比较多。


线程创建的API是CreateThread,但由于可能的内存泄漏问题,在C/Cpp中用_beginthreadex来完成。又由于类型的转型问题,书中直接用宏来完成这个函数

 

另一个有趣的问题是伪句柄,常用的GetCurrentProcess和GetCurrentThread都得到的是伪句柄,而线程间一些操作要用到真句柄,而从伪句柄得到真正的句柄是用前面章节介绍的DuplicateHandle函数。

 

 

在优先级这里有个例子,基本总结了线程的一些操作。我在这里改写成MFC框架的,一来为了更方便,二来因为MFC自己用的太少了,要多多熟悉一下,毕竟WIN32上面就它和VCL是可以用的开发框架了。

 

 

首先来解决一下怎么用MFC搞出一个非模式窗体为主窗体的程序结构来。用默认的对话框向导生成的是模式的,关键点在CwinApp:: InitInstance虚函数中。改为如下代码所示



同时对话框关闭时要调用DestroyWindow,并在PostNcDestroy事件中delete this删除指针。

 

把主线程要循环处理的代码放入到CwinApp的Idle事件中处理,比较与原程序意图相符。别的部分基本没有什么改动,只是没有用windowsX中的宏,而直接用MFC中的控件类处理之了,相对比较方便点。

下面直接给出源码,对话框资源很简单,一个列表框用来不停计数,两个下拉列表用来控制进程和线程的优先级,一个按钮用来生成另一个线程B,线程B用来停止主线程,并在继续主线程后退出。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值