Chinaunix首页 | 论坛 | 博客
  • 博客访问: 367957
  • 博文数量: 715
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:46
文章分类

全部博文(715)

文章存档

2011年(1)

2008年(714)

我的朋友

分类:

2008-10-13 16:29:57

今天翻侯捷译的《Win32多线程程序设计》时,忽然看到一句:不要在线程之间共享GDI对象。
好像脑袋里一点这方面的记忆都没有。对象包括GDI对象都是进程拥有,只要做好同步,不就行了。为什么不要呢?

翻到后面11章的解释:
GDI对象被每一个进程拥有,而被每一个线程锁定。如果一个线程正在使用一个GDI对象,它将被锁住,其他线程无法使用它。与其他windows资源不同,GDI对象的取用不是连续性的;线程不会排队等待一个忙碌的GDI对象,函数调用直接返回失败。如果一个线程删除一个DC,它就那么走了,即使有另一个线程正在使用它。

如果你使用自己自己的同步机制来保护它们,GDI对象就有可能被共享。然而,这样的机能没有在系统核心实现,因为它太没有效率了。


原来如此。细想一下,确实有理,GDI对象需要很即时的画图,着色,如果等待,那界面显示肯定很糟糕。

posted on 2005-06-08 21:04 Michael 阅读(2268)   


--------------------next---------------------

阅读(194) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~