Windows程序设计
整理和Windows应用
内存池基本
摘要: 1、为什么使用内存池?
通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。
阅读全文
posted @
2011-10-11 08:45 Yu_ 阅读(415) |
评论 (0) 编辑
线程池的使用(转)
摘要: 为什么要使用线程池:
创建多线程应用程序是非常困难的。需要会面临两个大问题。
一个是要对线程的创建和撤消进行管理,另一个是要对线程对资源的访问实施同步 。
阅读全文
posted @
2011-10-10 09:25 Yu_ 阅读(828) |
评论 (0) 编辑
线程与内核对象的同步
摘要: 若干种内核对象,包括进程,线程和作业。可以将所有这些内核对象用于同步目的。对于线程同步来说,这些内核对象中的每种对象都可以说是处于已通知或未通知的状态之中。
例如::当进程正在运行的时候,进程内核对象处于未通知状态,当进程终止运行的时候,它就变为已通知状态。进程内核对象中是个布尔值,当对象创建时,该值被初始化为FALSE(未通知状态)。当进程终止运行时,操作系统自动将对应的对象布尔值改为TRUE,表示该对象已经得到通知。当线程终止运行时,操作系统会自动将线程对象的状态改为已通知状态。因此,可以将相同的方法用于应用程序,以确定线程是否不再运行。
阅读全文
posted @
2011-10-08 00:10 Yu_ 阅读(391) |
评论 (0) 编辑
线程通信与同步
摘要: 线程需要在下面两种情况下互相进行通信:
• 当有多个线程访问共享资源而不使资源被破坏时。
• 当一个线程需要将某个任务已经完成的情况通知另外一个或多个线程时。
阅读全文
posted @
2011-10-07 23:58 Yu_ 阅读(407) |
评论 (0) 编辑
线程
摘要: 1、线程的组成
(1)、一个是线程的内核对象,操作系统用它管理线程。内核对象还是系统用来存放线程统计信息的地方。
(2)、一个线程堆栈,用于维护线程执行时所需的所有函数参数和局部变量。
阅读全文
posted @
2011-10-07 23:10 Yu_ 阅读(250) |
评论 (0) 编辑
进程间通信与同步
摘要: 讨论三个问题:
1、进程间如何通信呢,如何来相互传递信息呢?
(1)、低级通信:只能传递状态和整数值(控制信息)
–信号量(semaphore)
–信号(signal)
(2)、高级通信:能够传送任意数量的数据
–共享内存(shared memory)
–消息传递(message passing)
–管道(pipe)
阅读全文
posted @
2011-10-07 15:44 Yu_ 阅读(1364) |
评论 (0) 编辑
进程管理
摘要: 1、什么是进程?
::一般将进程定义成一个正在运行的程序的一个实例。进程由两部分组成:
①、一个内核对象,操作系统用它来管理进程。内核对象也是系统保存进程统计信息的地方。
②、一个地址空间,其中包含所有执行体(executable)或DLL模块的代码和数据。此外,它还包含动态内存分配,比如线程堆栈和堆的分配。
阅读全文
posted @
2011-10-07 11:19 Yu_ 阅读(399) |
评论 (0) 编辑
内核对象
摘要: 1、什么是内核对象?
内核对象的数据结构只能由内核访问。
他们有:令牌(access token)对象、事件对象、文件对象、文件映射对象、I/O完成端口对象、作业对象、mailslot对象、mutex对象、pipe对象、进程对象、semaphore对象、线程对象、waitable timer对象以及thread pool worker factory对象等等。大多数成员都是不同的对象类型特有的。
阅读全文
posted @
2011-10-06 17:27 Yu_ 阅读(772) |
评论 (0) 编辑