gpt4 book ai didi

windows - winbase.h(第 97 行)中的类似函数的宏 Yield() 是什么?

转载 作者:可可西里 更新时间:2023-11-01 11:31:47 25 4
gpt4 key购买 nike

头文件winbase.h第97行有一个奇怪的类函数宏如下:

#define Yield()

这是为了什么?

最佳答案

Windows 3.x 使用协作式多任务处理模型。所有应用程序(也称为“任务”)过去都在单线程的同一内存空间中运行。通常,任务之间的切换是由应用程序主消息循环中的 GetMessage API 执行的。 Yield() 曾经是自愿切换到另一个应用程序的方式(例如,如果进行长时间的 CPU 绑定(bind)处理)。这是一个 related MSKB article它仍然存在。

当然,像这样的 Yield() API 对于现代多线程、多进程操作系统架构来说没有意义。 因此,微软将其替换为一个空宏,试图实现编译级代码兼容性

有趣的是,在某种形式下 Yield()reincarnated在.NET 4.5 中。其目的是推迟异步方法在当前 SynchronizationContext 上的继续。 (或在池线程上,如果没有同步上下文)。其中有趣的部分是,在 .NET 应用程序的主 UI 线程中使用 Task.Yield() 实际上允许组织 Windows 3.x 必须提供的类似级别的协作多任务处理。

关于windows - winbase.h(第 97 行)中的类似函数的宏 Yield() 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18909719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com