C12、纤程
来源:互联网 发布:网络挂机 编辑:程序博客网 时间:2024/05/17 01:01
目的:方便将UNIX服务器程序移植到Windows中(以转换UNIX多线程为Windows多线程,因为他们使用不同的算法结构),Windows程序应该避免使用纤程。纤程以用户(非内核)方式代码实现。
一、将现有的线程转换为纤程:
PVOID ConvertThreadToFiber(PVOID pvParam);
该函数为纤程的执行环境分配内存(200 byte),(并初始化)其组成:
n 用户定义值:pvParam;
n 结构化异常处理链的头;
n 纤程内存栈的最高、最低地址
n CPU寄存器。
返回纤程的执行环境的内存地址
二、在该线程(已成为纤程)创建其他纤程:
PVOID CreateFiber( // 将创建新内存栈,分配执行环境结构,初始化
DWORD dwStackSize, // 内存栈大小,常 = 0
PFIBER_START_ROUTINE pfnStartAddress, // 纤程函数(你的函数)
PVOID pvParam); // 用户定义值
返回纤程的执行环境的内存地址
三、纤程函数原型:
VOID WINAPI FiberFunc(PVOID pvParam);// 即CreateFiber的pvParam
四、运行新纤程(纤程获得CPU时间的唯一方法):
VOID SwitchToFiber(PVOID pvFiberExecutionContext); // pvFiberExecutionContext = CreateFiber 或 ConvertThreadToFiber返回的地址。
五、撤销纤程:
VOID DeleteFiber(PVOID pvFiberExecutionContext); // 参数同上
如果传递了当前与线程相关联的纤程地址,则该线程与其创建的所有纤程被撤销
六、获得当前运行的纤程的执行环境的地址(内蕴函数 infrinsic function,运行快):
PVOID GetCurrentFiber(); 及
PVOID GetFiberData(); // 前叙pvParam
- C12、纤程
- c12
- C12(线程)
- C++程序设计语言读书笔记-C12 - 派生
- C12-1 等腰三角形的面积
- <PY><core python programming笔记>C12 模块
- 北航计算机机试C12年小岛面积
- <c语言经典100例>c12 分解质因数
- 机器学习c12笔记:SVM学习与SVM,逻辑回归和kNN比较
- 纤程
- 纤程
- 纤程
- 纤程
- 纤程
- Fiber 纤程
- windows 纤程
- windows核心编程--纤程
- windows核心编程--纤程
- 李强:利用JAX-WS开发Web服务
- 商务先锋2010
- PHP编程中正则表达式应用实例一
- Published caused RTTI ($M+) to be added to type '%s' (Delphi)
- VIM Tips
- C12、纤程
- 毕业5年决定你的命运 --------值得所有不甘平庸的人看看
- JAVA金典题目
- asp连接access,出现0x80004005,未指定的错误
- 基于Sip的P2P设计和原理分析
- 我要积分
- IP也不同
- C13、Windows的内存结构
- Exe4j生成JAVA 安装部署程序