Windows核心编程
文章平均质量分 81
快乐的霖霖
一个人默默的奋斗者
展开
-
windows字符和字符串处理
windows字符和字符串处理 Windows定义的Unicode数据类型有: WCHAR Unicode字符 PWSTR 指向Unicode字符串的指针 PCWSTR 指向一个恒定的Unicode字符串的指针 相对应的ANSI数据类型原创 2013-03-01 17:17:31 · 1117 阅读 · 0 评论 -
Windows中I/O完成端口机制详解
Windows中I/O完成端口机制详解 引言 要想编写一个高性能的服务器应用程序,必须实现一个高效的线程模型。让太少或者太多的服务器线程来处理客户的请求,都可能导致性能问题。例如,如果一个服务器创建单个线程来处理所有的请求,那么客户端可能长期等待而得不到响应,因为服务器同一时刻只能忙于处理一个请求。当然单个线程也能并发处理多个请求,当I/O操作被启动时,它可以从一个请求切换到另一个请原创 2013-04-01 23:57:59 · 1730 阅读 · 0 评论 -
Windows下时间函数总结
Windows下时间函数总结 通过阅读《windows核心编程》和左丞的博客《http://blog.csdn.net/morewindows/article/details/6854764》,现在总结下Windows下时间函数和使用方法。 一. Windows平台下常用的计时函数 Windows平台下常用的计时函数,包括精度为秒、毫秒、微秒三原创 2013-04-02 16:47:12 · 2386 阅读 · 0 评论 -
秒杀多线程第十二篇 多线程同步内功心法——PV操作上
秒杀多线程第十二篇 多线程同步内功心法——PV操作上 前面的文章讲解了在Windows系统下实现多线程同步互斥的方法,为了提高在实际问题中分析和思考多个线程之间同步互斥问题的能力,接下来将讲解PV操作,这也是操作系统中的重点和难点。本文将会先简要介绍下PV操作的来源和基本使用方法,然后再通过两道经典的计算机考研真题——放水果和安全岛来示范如何运用PV操作。 先讲讲转载 2013-03-22 09:56:11 · 1015 阅读 · 0 评论 -
Windows下权限上下文
Windows下权限上下文 >一书中第四章讲解UAC(用户账户控制)的时候,有一个函数GetProcessElevation能返回提升类型和一个指出进程是否正在以管理员身份运行的布尔值. BOOL GetProcesElevation(TOKEN_ELEVATION_TYPE *pElevation, BOOL *pIsAdmin) { HANDLE hToken原创 2013-04-05 15:53:26 · 1358 阅读 · 0 评论 -
VC 利用DLL共享区间在进程间共享数据及进程间广播消息
VC 利用DLL共享区间在进程间共享数据及进程间广播消息 在进程间共享数据有很多种方法,剪贴板,映射文件等都可以实现,这里介绍用DLL的共享区间在进程间共享数据,及共享数据有变化时及时的反馈给各相关进程。 一.在DLL中设置共享区间 在DLL中是用数据段来实现共享区间的,有了这个共享区间,各进程可以方便的共享数据。 1.先用#pragma data_转载 2013-04-05 17:07:31 · 1019 阅读 · 0 评论 -
秒杀多线程第十四篇 关键段,事件,互斥量,信号量的“遗弃”问题
秒杀多线程第十四篇 关键段,事件,互斥量,信号量的“遗弃”问题 在《秒杀多线程第九篇 经典线程同步总结 关键段 事件 互斥量 信号量》中对经典多线程同步互斥问题进行了回顾和总结,这篇文章对Windows系统下常用的线程同步互斥机制——关键段、事件、互斥量、信号量进行了总结。有网友问到互斥量能处理“遗弃”问题,事件和信号量是否也能处理“遗弃”问题。因此本文将对事件和信号量作个试验,转载 2013-03-22 10:29:21 · 1173 阅读 · 0 评论 -
秒杀多线程第十五篇 多线程十大经典案例之一 双线程读写队列数据
秒杀多线程第十五篇 多线程十大经典案例之一 双线程读写队列数据 《多线程十大经典案例之一双线程读写队列数据》案例描述: MFC对话框中一个按钮的响应函数实现两个功能: 显示数据同时处理数据,因此开两个线程,一个线程显示数据(开了一个定时器,响应WM_TIMER消息按照一定时间间隔向TeeChart图表添加数据并显示)同时在队列队尾添加数据,另一个线程从该队列队头去转载 2013-03-22 11:01:30 · 2229 阅读 · 0 评论 -
多线程面试题摘选
多线程面试题摘选 一. 概念性问答题 1. 线程的基本概念,线程的基本状态及状态之间的关系? 答: 线程是指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身。 java线程的基本状态:运行,就绪,挂起,结束。 2. 线程与进程的区别? 答: 1、 线程是进程的一部分,所以线程有的时候被称为是轻权进程或者轻量级进程。原创 2013-03-22 11:18:53 · 3076 阅读 · 0 评论 -
windows线程调度、线程优先级和亲缘性
windows线程调度、线程优先级和亲缘性 每一个线程在它的线程内核对象中有一个上下文结构,反映了线程最后一次执行的 CPU 寄存器状态,每隔大约 20ms(可以使用 GetSystemTimeAdjustment 获得,我测得这个间隔大约为 15.6ms),Windows 在所有当前内核对象中查找可调度线程,并选择一个可调度线程,从这个线程的上下文结构中读取 CPU 寄存器状态原创 2013-03-27 23:27:57 · 1474 阅读 · 0 评论 -
秒杀多线程第九篇 生产者消费者问题
秒杀多线程第九篇 生产者消费者问题 继前面经典线程同步问题之后,我们来看看生产者消费者问题及读者写者问题。生产者消费者问题是一个著名的线程同步问题,该问题描述如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个具有多个缓冲区的缓冲池,生产者将它生产的产品放入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,显转载 2013-03-16 11:28:56 · 1093 阅读 · 0 评论 -
秒杀多线程第八篇 经典线程同步总结 关键段 事件 互斥量 信号量
秒杀多线程第八篇 经典线程同步总结 关键段 事件 互斥量 信号量 之前详细介绍了常用的线程同步互斥机制——关键段、事件、互斥量、信号量。下面对它们作个总结,帮助大家梳理各个知识点。 首先来看下关于线程同步互斥的概念性的知识,相信大家通过前面的文章,已经对线程同步互斥有一定的认识了,也能模糊的说出线程同步互斥的各种概念性知识,下面再列出从《计算机操作系统》一书中选取转载 2013-03-16 10:18:28 · 968 阅读 · 0 评论 -
秒杀多线程第七篇 经典线程同步 信号量Semaphore
秒杀多线程第七篇 经典线程同步 信号量Semaphore 前面介绍了关键段CS、事件Event、互斥量Mutex在经典线程同步问题中的使用。本篇介绍用信号量Semaphore来解决这个问题。 首先也来看看如何使用信号量,信号量Semaphore常用有三个函数,使用很方便。下面是这几个函数的原型和使用说明。 第一个 CreateSemaphore 函数功能:创建信转载 2013-03-16 10:03:57 · 1008 阅读 · 0 评论 -
内核对象
内核对象 1 什么是内核对象 内核对象是内核分配的一段空间,如文件对象和进程对象等。可以用Windows提供的函数来创建相应的内核对象。创建成功后返回一个对象句柄,并且对象句柄值是进程相关的。程序不能直接操作内核对象,只能通过Windows提供的函数来控制。 1.1内核对象的使用计数 内核对象可以被多个进程同时使用,句柄值通常会不一样,但是引用的原创 2013-03-14 23:15:40 · 1210 阅读 · 0 评论 -
秒杀多线程第二篇 原子操作 Interlocked系列函数
秒杀多线程第二篇 原子操作 Interlocked系列函数 上一篇《 CreateThread与_beginthreadex本质区别》中讲到一个多线程报数功能。为了描述方便和代码简洁起见,我们可以只输出最后的报数结果来观察程序是否运行出错。这也非常类似于统计一个网站每天有多少用户登录,每个用户登录用一个线程模拟,线程运行时会将一个表示计数的变量递增。程序在最后输出计数的值表示有今天多少个转载 2013-03-15 11:08:29 · 1133 阅读 · 0 评论 -
秒杀多线程第三篇 一个经典的多线程同步问题
秒杀多线程第三篇 一个经典的多线程同步问题 上一篇介绍了原子操作在多进程中的作用,现在来个复杂点的。这个问题涉及到线程的同步和互斥,是一道非常有代表性的多线程同步问题,如果能将这个问题搞清楚,那么对多线程同步也就打下了良好的基础。 程序描述: 主线程启动10个子线程并将表示子线程序号的变量地址作为参数传递给子线程。子线程接收参数 -> sleep(50) -转载 2013-03-15 11:14:18 · 854 阅读 · 0 评论 -
秒杀多线程第四篇 经典线程同步 关键段CS
秒杀多线程第四篇 经典线程同步 关键段CS 上一篇提出了一个经典的多线程同步互斥问题,本篇将用关键段CRITICAL_SECTION来尝试解决这个问题。 本文首先介绍下如何使用关键段,然后再深层次的分析下关键段的实现机制与原理。 关键段CRITICAL_SECTION一共就四个函数,使用很是方便。下面是这四个函数的原型和使用说明。 函数功能:初始化转载 2013-03-15 13:15:13 · 954 阅读 · 0 评论 -
秒杀多线程第一篇 CreateThread与_beginthreadex本质区别
秒杀多线程第一篇 CreateThread与_beginthreadex本质区别 本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beginthreadex到底有什么区别,在实际的编程中到底应该使用CreateThread还是_b转载 2013-03-15 10:40:22 · 1100 阅读 · 0 评论 -
秒杀多线程第五篇 经典线程同步 事件Event
秒杀多线程第五篇 经典线程同步 事件Event 上一篇中使用关键段来解决经典的多线程同步互斥问题,由于关键段的“线程所有权”特性所以关键段只能用于线程的互斥而不能用于同步。本篇介绍用事件Event来尝试解决这个线程同步问题。 首先介绍下如何使用事件。事件Event实际上是个内核对象,它的使用非常方便。下面列出一些常用的函数。 第一个 CreateEvent转载 2013-03-15 13:57:03 · 1190 阅读 · 0 评论 -
秒杀多线程第十篇 读者写者问题
秒杀多线程第十篇 读者写者问题 与上一篇生产者消费者问题一样,读者写者也是一个非常著名的同步问题。读者写者问题描述非常简单,有一个写者很多读者,多个读者可以同时读文件,但写者在写文件时不允许有读者在读文件,同样有读者在读文件时写者也不去能写文件。 上面是读者写者问题示意图,类似于生产者消费者问题的分析过程,首先来找找哪些是属于“等待”情况。 第一.写者要等转载 2013-03-17 11:29:19 · 998 阅读 · 0 评论 -
秒杀多线程第十一篇 读者写者问题续 读写锁SRWLock
秒杀多线程第十一篇 读者写者问题续 读写锁SRWLock 在前一篇文章中我们使用事件和一个记录读者个数的变量来解决读者写者问题。问题虽然得到了解决,但代码有点复杂。本篇将介绍一种新方法——读写锁SRWLock来解决这一问题。读写锁在对资源进行保护的同时,还能区分想要读取资源值的线程(读取者线程)和想要更新资源的线程(写入者线程)。对于读取者线程,读写锁会允许他们并发的执行转载 2013-03-17 11:48:16 · 1241 阅读 · 0 评论 -
秒杀多线程第六篇 经典线程同步 互斥量Mutex
秒杀多线程第六篇 经典线程同步 互斥量Mutex 前面介绍了关键段CS、事件Event在经典线程同步问题中的使用。本篇介绍用互斥量Mutex来解决这个问题。 互斥量也是一个内核对象,它用来确保一个线程独占一个资源的访问。互斥量与关键段的行为非常相似,并且互斥量可以用于不同进程中的线程互斥访问资源。使用互斥量Mutex主要将用到四个函数。下面是这些函数的原型和使用说明。转载 2013-03-16 09:12:29 · 962 阅读 · 0 评论 -
Windows 纤程详解
Windows 纤程详解 在Windows2000/XP中,纤程(fiber)相当于用户级别的线程或轻进程.纤程由Win32库函数支持,对核心是不可见的.纤程可以通过SwitchToFiber显示至另一合作纤程,以实现合作纤程之间的协同. 纤程包含独立的目态栈,寄存器状态的控制信息.目态控制的纤程转接要求较高的编程经验.由于纤程属于目态对象,一个纤程被封锁意味着所在原创 2013-06-13 23:53:23 · 4395 阅读 · 0 评论