《win32多线程程序设计》读书笔记

什么是进程,什么是线程,进程与线程的区别?
进程含有内存和资源,被进程拥有的内存,理论上可以高达2GB,资源包括核心对象(如file handles和线程)、USER资源(对话框和字符串)、GDI资源(如Device Context和brushes)。
进程本身不能够执行,只是提供一个安置内存和线程的地方。

Win32核心对象包括:
进程processes
线程threads
文件files
事件events
信号量semaphores
互斥量mutexes
管道(pipes,分为named和anonymous两种)
GDI对象有单一拥有者,核心对象的拥有者可以包括多个,甚至可以跨进程。
为了保持对每个拥有者追踪,核心对象有一个引用计数,记录多少个handles对应此对象,以及这个对象对应的拥有者。

Worker线程,指完全不牵挂到图像用户界面,纯粹做运算的线程。

P103

后台打印


Win32线程包括GUI线程和worker线程。
Worker线程,指完全不牵挂到图像用户界面,纯粹做运算的线程,它会使主线程的消息队列失去反应。
GUI线程负责建造窗口以及处理主消息循环,不会去做那些不能马上完成的工作。
如果worker线程也产生了一个窗口,那么就会有一个消息队列伴随窗口而产生并附着在此线程上,于是worker线程就变成了一个GUI线程。也就是说,worker线程不能产生窗口、对话框、消息框或其他任何与UI有关的东西。

如果worker线程需要输入输出错误信息,它应该授权给UI线程来做,并且将结果通知给worker线程。

TVERIFY宏即适用于GUI程序也适用于console程序,这个宏内部其实是记录并解释了Win32 GetLastError()的结果。如果Win32函数失败,MTVERIFY()会打印出一段简短的文字说明,在多线程编程时检查错误效果尤为突出。

HeapAlloc是一个Windows API函数。它用来在指定的堆上分配内存,并且分配后的内存不可移动。
 

多线程后台打印程序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haimianjie2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值