前言
程序开发中经常遇到需要这些情况:辅助线程正在等待内核对象的触发,主线程需要强制终止辅助线程。我们常常做的就是使用:TerminateThread来强制终止线程。这样做当然是不太好的,强制终止线程后系统不会销毁此线程的堆栈,长久下去内存泄露问题就会很严重了。线程最安全的退出方式当然还是让它自己返回了。本文主要介绍windows核心编程中介绍的一种安全退出线程方式:使用可等待API等待内核对象...
分类:
编程语言 时间:
2015-03-16 12:53:41
阅读次数:
239
原帖:http://www.cnblogs.com/chain2012/archive/2010/11/12/1875578.html因为Windows的内核对象也运用了引用计数,所以稍作了解并非无用。引用计数可以让多个对象共享一个数据,而且免除了跟踪控制权的负担,让对象自己管理自己,当再没有被使用...
分类:
编程语言 时间:
2015-03-11 12:52:54
阅读次数:
174
1、内核对象同步与用户模式下同步对比
使用内核对象的唯一缺点就是性能,调用内核对象函数时,调用线程必须从用户模式切换到内核模式,这种切换是相当
耗时的。
内核对象(进程、线程、作业)要么处于触发态,要么处于未触发状态。进程内核对象在创建时总是处于未触发状态,
当进程终止时,操作系统会自动使进程内核对象变成触发状态。当进程内核对象处于触发状态后,将永远保持这种状态,
再也不能变回未触发状态...
分类:
编程语言 时间:
2015-03-01 10:32:56
阅读次数:
344
创建可等待定时器是Windows内部线程同步的方式之一,本文简单讲述如何使用这一内核对象进行线程同步。
创建对象:
//创建事件内核对象,默认未触发状态
HANDLE hTimer = CreateWaitableTimer(NULL, TRUE, NULL);
设置对象属性:
CreateWaitableTimer创建完成后内核对象处于未触发状态,需要使用API
BOOL WIN...
异步IO操作与同步操作区别: 在CreateFile里的FILE_FLAG_OVERLAPPED标志 异步操作函数LPOVERLAPPED参数 接收IO请求完成通知 触发设备内核对象 缺点:同一个设备内核对象有可能进行多次读写操作,这样第一个完成这个设备内核对象就会被触发,所以这种方式不可以使用于这...
RT-Thread的内核对象模型是一种非常有趣的面向对象实现方式。由于C语言更为面向系统底层,操作系统核心通常都是采用C语言和汇编语言混合编写而成。C语言作为一门高级计算机编程语言,一般被认为是一种面向过程的编程语言:程序员按照特定的方式把要处理事物的过程一级级分解成一个个子过程。面向对象源于...
分类:
其他好文 时间:
2015-02-05 12:54:14
阅读次数:
209
等待定时器内核事件CreateWaitableTimer(PSECURITY_ATTRIBUTES psa,BOOL fManualReset,PCTSTR pszName);进程可以获得它自己的与进程相关的现有等待定时器的句柄。HANDLE OpenWaitableTimer(DWORD dwDe...
分类:
编程语言 时间:
2015-01-31 12:02:15
阅读次数:
207
跨越进程边界共享内核对象有三种方法:
对象句柄的继承性命名对象复制对象句柄
命名对象
共享跨越进程边界的内核对象的第二种方法是给对象命名,注意有些内核对象是不可以命名的,但多数内核对象可以命名。
下面的所有函数都可以创建命名的内核对象:
HANDLE CreateMutex(
PSLCURITY_ATTRIBUTES psa,
BOOL bInitia...
分类:
系统相关 时间:
2015-01-28 18:07:45
阅读次数:
240
1、操作系统线程调度过程
每个线程都有一个上下文CONTEXT结构体,保存在线程的内核对象中,这个上下文中保存了线程上一次执行时CPU寄存器
的状态。每隔固定时间,Windows会查看所有当前存在的线程内核对象,其中只有一些是可调度的。Windows在可调度的
线程中选择一个,并将上次保存到线程上下文中的数据载入CPU寄存器中。(上下文切换)
CPU时间片到后,Windows移出这个线程,...
分类:
编程语言 时间:
2015-01-28 13:10:00
阅读次数:
220
线程与内核对象的同步内核对象可以处于已通知或未通知状体进程,线程,作业,文件,控制台输入,文件修改,事件,可等待定时器等待函数DWORD WaitForSingleObject(HANDLE hobject, DWORD dwMilliseconds);同时查看若干个内核对象已通知状体DWORD W...
分类:
编程语言 时间:
2015-01-28 00:43:29
阅读次数:
229