摘要:摘要在 Microsoft Windows 平台上有几种以原子方式锁定代码和数据的不同方法。此白皮书的主要目的是向开发人员简要介绍 Windows 中进行锁定的不同方法以及与这些锁定有关的相应性能开销。因为未来架构将是多核架构,因此此信息非常适用。简介多线程软件应用对于提升英特尔内核架构的性能至关重要。锁定代码通常是多线程应用中运行最频繁的代码。确定要使用的锁定方法与确定应用中并行处理一样重要。此白皮书的主要目的是向开发人员简要介绍 Windows 中进行锁定的不同方法以及与这些锁定有关的相应性能开销。Window 的某些锁定 API 可能会跳转至操作系统内核。此白皮书将详细说明跳转至内核的
阅读全文
摘要:在所有的内核对象中,事件内核对象是个最基本的对象。事件能够通知一个操作已经完成。客户机和一个服务器,它们之间需要互相进行通信例子(vs2008 )事件内核对象的组成一个使用计数(与所有内核对象一样),一个用于指明该事件是个自动重置的事件还是一个人工重置的事件的布尔值,一个用于指明该事件处于已通知状态还是未通知状态的布尔值。有两种不同类型的事件对象一种是人工重置的事件,另一种是自动重置的事件。当人工重置的事件得到通知时,等待该事件的所有线程均变为可调度线程。当自动重置的事件得到通知时,等待该事件的线程中只有一个线程变为可调度线程。当一个线程执行初始化操作,然后通知另一个线程执行剩余的操作时,事件
阅读全文
摘要:通过WRK可以了解到,WINDOWS内核绝大部分源代码是由C语言实现,只有部分与处理器相关的调度代码是通过汇编语言实现。最近半年我对WINDOWS平台本身有很高的兴趣,其实我作为应用程序开发人员对于WINDOWS内核没有必要知道的太多,但是了解下不仅对我应用程序排查问题有帮助,而且WINDOWS内核中有很多良好的设计也是我们应用开发人员值得学习的,例如说内存堆管理,IO体现等,甚至可以引用到自己的项目中。很多程序员和架构师每天围绕WINDOWS展开工作,因为我们的程序就是基于WINDOWS的,WINDOWS占领了PC的市场,关键是不得不用。我们开发的程序可以认为是WINDOWS能力的扩展,在W
阅读全文
摘要:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs;typeTForm1 = class(TForm)procedure FormCreate(Sender: TObject);procedure FormDestroy(Sender: TObject);privateprocedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;{ Private declarations }pub
阅读全文
摘要:BOOL RegisterHotKey( HWND hWnd, //响应该热键的窗口句柄 Int id, //该热键的唯一标识 UINT fsModifiers, //该热键的辅助按键 UINT vk //该热键的键值 ); 为了得到唯一标识,我们还将用到另一个API函数 ATOM GlobalAddAtom( LPCTSTR lpString //自己设定的一个字符串 ); 因为我们还要在程序退出的时候,消除这个热键, 所以需要声明一个全局变量: HotKeyId: Integer; 第一步: 在窗口的create事件中,加入以下代码 HotKeyId := GlobalAddAtom...
阅读全文