用户界面对象的线程亲缘性第四篇: GDI 对象及其他
作者:BlogUpdater |
时间:2023-05-10 |
浏览:604 |
评论已关闭 条评论
相对于之前的线程亲缘性主题相关的几篇文章,GDI 对象要简单得多。
作为一般规则,它们都具有进程相关性:创建它们的进程中的任何线程都可以使用它们。如果使用来自多个线程的 GDI 对象,则负责协调对象的使用。也就是说,你确实可以在主线程中创建 GDI 对象,然后在另一个线程中操作它,这没有任何问题,但需要自己做好线程同步,具体请看下面的说法。
要注意的是,窗口管理器和 GDI 对象通常保持其各自的对象线程安全。当我说协调来自多个线程的对象使用是你的责任时,我的意思是,如果你要从一个线程修改对象并在另一个线程上读取对象或从两个线程修改它,则必须在自己的线程之间进行协调。例如,如果一个线程枚举菜单,而另一个线程正在修改菜单,则执行枚举的线程将获得不一致的结果。同样,如果两个线程都尝试同时更改菜单项,则最后一个编写器将修改成功。
在下一篇文章中,我们将会讨论资源清理相关的问题。
总结
原则:主界面线程负责所有和用户界面相关的操作,工作线程,不到万不得已,仅做一些”脏活累活”。
最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Thread affinity of user interface objects, part 4: GDI objects and other notes on affinity》
最近我写了个东西
正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。
如需转载,请注明来自:Topomel Box
相关推荐
- Visual Studio 2022 Version 17.9 新功能
- Posted on 03月08日
- 说说有点意思的STRRET结构体
- Posted on 09月20日
- 错误信息:svn update时出现Checksum mismatch
- Posted on 08月14日
- 新技巧GET: 使用gdbserver来调试Linux CMake工程
- Posted on 12月23日
评论已关闭。