高效线程使用圣典
严格来讲,线程的系统开销很大。系统必须为线程分配并初始化一个线程内核对象,还必须为每个线程保留1MB的地址空间(按需提交)用于线程的用
户模式堆栈,分配12KB左右的地址空间用于线程的内核模式堆栈。然后,紧接着线程创建后,Windows调用进程中每个DLL都有的一个函数来通知进程....
分类:
编程语言 时间:
2014-05-23 10:25:32
阅读次数:
399
1内核对象定义:
1.1:每个内 核对象只是内核分配的一个内存块,并且只能由该内核访问。
1.2:该内存块是一种数据结构,它的成员负责维护该对象的各种信息。
有些数据成员(如安全性描述符、使用计数等)在所有对象类型中是相同的,但大多数数据成员属于特定的对象类型。例如,进程对象有一个进程ID 、一个基 本优先级和一个退出代码,而文件对象则拥有一个字节位移、一个共享模式和一个打开模...
线程的同步可分用户模式的线程同步和内核对象的线程同步两大类。
用户模式中线程的同步方法主要有原子访问和临界区等方法。其特点是同步速度特别快,适合于对线程运行速度有严格要求的场合。
内核对象的线程同步则主要由事件、等待定时器、信号量以及信号灯等内核对象构成。由于这种同步机制使用了内核对象,使用时必须将线程从用户模式切换到内核模式,而这种转换一般要耗费近千个CPU...
分类:
编程语言 时间:
2014-05-18 14:32:18
阅读次数:
293
前面博客讲了互斥量(MUTEX)和关键段(CRITICAL
SECTION)的使用,想来总觉不妥,就如盲人摸象一般,窥其一脚而言象,难免以偏概全,追加一篇博客查遗补漏。 win32下的线程同步技术分为用户模式下的线程同步和用内核对象进行线程同步两大类。用户模式下的线程同步和用内核对象进行线程同步有....
分类:
编程语言 时间:
2014-05-09 02:58:18
阅读次数:
451
一 废话
在上一篇文章中,我们介绍了通过等待内核对象来接受I/O完成通知的重叠I/O。除了使用同步对象外,我们还可以使用其它方法,这便是这篇文章要介绍的使用完成例程的扩展I/O。完成例程其实就是回调函数,当I/O完成的时候系统调用一个用户指定的回调函数来通知用户I/O完成,
调用完回调函数之后,可....
分类:
其他好文 时间:
2014-05-07 17:50:04
阅读次数:
401
1,线程概述线程是程序汇中独立的指令流。线程有一个优先级,实际上正在处理的程序的位置计数器,一个存储其局部变量的栈。每个线程都有自己的栈。但应用程序的内存和堆由一个进程的所有线程共享。进程包含资源,如windows句柄,文件句柄或其他内核对象。每个进程都分配了虚拟内存。一个进程至少包含一个线程。操作...
分类:
编程语言 时间:
2014-05-07 17:13:48
阅读次数:
477
Windows开发中,经常会碰到一个常见的字眼HWND,如下
HWND hWnd;
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);HW...
分类:
其他好文 时间:
2014-05-03 00:37:59
阅读次数:
378
Windows没有message
queue累世的IPC内核对象,使得在在处理IPC时少了一种传递消息的手段。利用Windows的Naming
Object可以实现一套简单的Inter-Thread消息队列。这里并不使用socket,因为一旦使用socket,就得负责port管理,很麻烦,另外在对外...
分类:
编程语言 时间:
2014-05-01 02:30:44
阅读次数:
555