Windows 纤程详解
在Windows2000/XP中,纤程(fiber)相当于用户级别的线程或轻进程.纤程由Win32库函数支持,对核心是不可见的.纤程可以通过SwitchToFiber显示至另一合作纤程,以实现合作纤程之间的协同.
纤程包含独立的目态栈,寄存器状态的控制信息.目态控制的纤程转接要求较高的编程经验.由于纤程属于目态对象,一个纤程被封锁意味着所在线程被封锁.应用程序可以通过ConvertThreadToFiber将线程转换为纤程.与线程对比,纤程具有切换速度快的特点.
Microsoft公司给Windows添加了一种纤程,以便能够非常容易地将现有的UNIX服务器应用程序移植到Windows中。UNIX服务器应用程序属于单线程应用程序(由Windows定义),但是它能够为多个客户程序提供服务。换句话说, UNIX应用程序的开发人员已经创建了他们自己的线程结构库,他们能够使用这种线程结构库来仿真纯线程。该线程包能够创建多个堆栈,保存某些C P U寄存器,并且在它们之间进行切换,以便为客户机请求提供服务。
显然,若要取得最佳的性能,这些UNIX应用程序必须重新设计,仿真的线程库应该用Windows提供的纯线程来替代。然而,这种重新设计需要花费数月甚至更长的时间才能完成,因此许多公司首先将它们现有的UNIX代码移植到Windows中,这样就能够将某些应用软件推向Windows市场。
使用纤程
线程是在Windows内核中实现的,纤程是在用户模式下实现的,内核对纤程一无所知,内核会根据我们定义的算法来对纤程进行调度。
一个线程可以包含一个或多个纤程。
转化线程为纤程
使用纤程的第一个步骤是将已有的线程转换为一个纤程。ConvertThreadToFiber这个函数会为纤程的上下文分配内存,这个上下文的构成是:
# 一个用户自定义的值
# 结构化异常处理链的头
# 纤程栈的顶部和底部的内存地址
# 某些CPU寄存器,其中包括栈指针、指令指针以及其他寄存器
当我们分配了纤程执行上下文并对其进行初始化之后,还必须将执行上下文的地址与线程关联起来。这样我们就将线程转换成了一个纤程,该纤程在这个线程中执行。
其实,除非我们打算创建更多的纤程,并让它们在同一个线程中运行,否则没有理由将一个线程转换为纤程。
CreateFiber:创建一个纤程
SwitchToFiber:调用一个纤程(同一个线程中,同一时刻只能执行一个纤程)
DeleteFiber:通常为一个纤程调用,来删除另一个纤程
GetCurrentFiber:得到当前正在运行的纤程
Windows 纤程详解相关推荐
- Windows API函数大全---附:windows运行命令详解
1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连 ...
- python协程详解_python协程详解
原博文 2019-10-25 10:07 − # python协程详解 ![python协程详解](https://pic2.zhimg.com/50/v2-9f3e2152b616e89fbad86 ...
- Windows权限设置详解
Windows权限设置详解 随着动网论坛的广泛应用和动网上传漏洞的被发现以及SQL注入式***越来越多的被使用,WEBSHELL让防火墙形同虚设,一台即使打了所有微软补丁.只让80端口对外开放的WEB ...
- python协程详解
目录 python协程详解 一.什么是协程 二.了解协程的过程 1.yield工作原理 2.预激协程的装饰器 3.终止协程和异常处理 4.让协程返回值 5.yield from的使用 6.yield ...
- Windows XP服务详解
Windows XP服务详解 微软的个人操作系统从Win98发展到WinXP,为什么突然变得那么消耗系统资源呢?以至于很多人都感觉WinXP只是高配置的电脑才能运行的操作系统,其实不然.WinXP ...
- 技术资料收藏:Windows系统文件中文详解
技术资料收藏:Windows系统文件中文详解 A ↑ ACCESS.CHM - Windows帮助文件 ACCSTAT.EXE - 辅助状态指示器 ADVAPI32.DLL - 高级Win32应用程序 ...
- 优化Windows XP虚拟内存详解(转)
优化Windows XP虚拟内存详解(转)[@more@] 什么是虚拟内存? 虚拟内存是Windows XP为作为内存使用的一部分硬盘空间.即便物理内存很大,虚拟内存也是必不可少的.虚拟内存在硬盘上其 ...
- 计算机代码 w6,蓝魔w6hd的参数介绍和刷机教程详解【图解】
手机和电脑的逐渐普及,让人们已经逐渐的习惯数码产品的存在,但是随着时间的推移,人们对于数码产品的要求也越来越高.手机虽然方便,但是毕竟它的功能还是没有电脑强大,而且屏幕还很小.电脑虽然功能强大,但是携 ...
- 《Windows系统文件名详解(上)》
WINDOWS应用 UNIX|LINUX office软件 其他内容 维修实例 其他 photoshop CorelDraw AutoCAD 其他 程序语言类 数据库类 网站建设 互联网应用 网络安全 ...
最新文章
- 帝国CMS列表分页样式(三)[!--show.listpage--]
- 16进制颜色透明_PPT | 如何快速提取图片颜色之人生太卷
- 畅通工程,How Many Tables ACM第九天-图论
- linux下软件的基本安装和卸载 法一
- 小波变换(wavelet transform)的通俗解释(三)
- 9ztu.com 就找图商品图片商品条码搜索引擎
- 液晶显示器模拟接口时,屏幕重影照片
- 《博弈论》— 人生何处不博弈
- js-ramda-介绍和对比lodash及补集库
- python批量ppt转图片,pdf转图片,word转图片脚本
- CVTE面试总结(全网面经,已收offer)
- Typora崩溃 与 设置备份
- BIM轻量化技术解析
- Ubuntu设置仅允许特定用户或特定IP通过ssh访问
- 500G 史上最全的JAVA全套教学视频网盘
- 解决XWPFRun的addPicture方法无法显示图片的问题
- Appscan工具的使用
- sd和sem啥区别_标准差和标准误的选择 (SD) 和 (SEM)
- Win7系统删除网络驱动器盘符
- 《疯狂Java讲义》读书笔记3
热门文章
- elasticsearch基础3——聚合、补全、集群
- ElasticSearch查询地图信息(geo-point类型)
- 第一台计算机是怎么输出,世界上第一台计算机是如何诞生的?
- Building A New Barn
- linux+格式化磁盘格式化,Linux下的磁盘格式化
- nginx安装crt证书
- 【摘】WebGIS开发从入门到......
- 上传文件计算机传输的,文件全能王怎么把文件传到电脑上 文件全能王文件上传到电脑教程...
- 系统管理员的3大黄金法则
- 网络舆情分析技术 读书笔记1