《Win32多线程程序设计》
文章平均质量分 78
dqzk梦语
吾之所向一往无前愈挫愈奋再接再厉
展开
-
《Win32多线程程序设计》线程初识
进程就是一大堆对象的拥有权的集合。【这解释言简意赅,我喜欢】多线程vs多进程多线程:线程价廉。线程启动比较快,退出比较快,对系统资源的冲击也比较小。而且, 线程彼此分享了大部分核心对象(如 file handles)的拥有权。 多重进程:最困难的问题大概是如何把窗口的 handle 交给另一个进程。为了分享窗口 handle,你必须明明白白地产生该 handle 的一个副本,并且可以原创 2017-08-07 21:59:07 · 305 阅读 · 0 评论 -
《Win32多线程程序设计》之线程优先级
线程优先权(Thread Priority)Win32 优先权是以数值表现的,并以进程的“优先权类别(priorityclass)”、线程的“优先权层级 (priority level)”和操作系统当时采用的“动态提升(Dynamic Boost )”作为计算基准。 所有因素放在一起,最后获得一个 0~31 的数值。拥有最高优先权之线程,即为下一个将执行起来的线程。1. 优先权类别(Priority原创 2017-08-24 21:43:32 · 601 阅读 · 0 评论 -
《Win32多线程程序设计》之线程同步
线程等待 等待是线程的必要之恶。 比较low的等待方法是:1.sleep(), 2.循环GetExitCodeThread()。这两种方法耗cpu,且使代码效率低下。用WaitForSingleObject,等待核心对象变为激发状态DWORD WaitForSingleObject(HANDLE hHandle,DWORD dwMilliseconds);DWORD WaitForMult原创 2017-08-22 23:41:39 · 363 阅读 · 0 评论 -
《Win32多线程程序设计》之异步IO
本章描述如何使用 overlapped I/O(也就是 asynchronous I/O)?某些时候 overlapped I/O 可以取代多线程的功用。然而, overlapped I/O 加上completion ports,常被设计为多线程处理,以便在一个“受制于 I/O 的程序”(所谓 I/O bound 程序)中获得高效率。这一章介绍一个你可能不想使用多线程的场合。许多应用程序,例如终端机原创 2017-09-04 23:29:08 · 350 阅读 · 0 评论 -
《Win32多线程程序设计》之线程终止
本文讨论如何在某个线程内终止另一个正在运行的线程或者在一个线程中控制其他线程类似问题方法一:利用 TerminateThread() 放弃一个线程 “TerminateThread() 是一个危险的函数, 应该在最不得已的情况下才使用”。 缺点: - 目标线程结束前无法释放堆栈,可能造成内存泄漏 - 如果线程在一个critical section中,则该critical se原创 2017-08-23 22:36:58 · 491 阅读 · 0 评论 -
《Win32多线程程序设计》C++中的多线程
【本章看的比较杂,还是以Q&A的方式展开吧】 Q: C++中调用_beginthreadex()需要注意什么? A: unsigned long _beginthreadex(void *security,unsigned stack_size,unsigned (* start_address)(void*),void *arglist,unsigned initflag,unsi原创 2017-09-29 00:04:04 · 359 阅读 · 0 评论 -
《Win32多线程程序设计》CRT中的多线程
Q: 再次加深印象volatile A: 【可以说基本没用到过,所以也总是忘记怎么用。。。】 易变的,这个关键字告诉编译器不要持有变量的临时性拷贝。即不让编译器优化变量,因某些变量值变化频繁时,如果编译器进行优化,则在寄存器中就存储了其变量值,取值也会在存储器中取,这会导致读到的值是过去的某个值,导致错误。 const 和 volatile 都是 ANSI 的标准关键字,所有的 C/C++原创 2017-09-29 00:35:42 · 299 阅读 · 0 评论