首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >丝线安全吗?

问丝线安全吗?
EN

Stack Overflow用户
提问于 2009-11-12 15:20:41
回答 2查看 3.7K关注 0票数 3

我仔细阅读了MSDN文档,却找不到这样或那样的语句。我感兴趣的是:

  1. 我是否可以在一个线程上调用GdiplusStartup(),然后在另一个线程上使用?还是需要为每个线程调用GdiplusStartup()?
  2. 如果线程1上有Bitmap对象,线程2上有不同的Bitmap对象,那么它们是否可以同时调用Bitmap::DrawImage(),还是需要添加锁定以确保序列化?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-12 15:35:08

MSDN文档声明“您可以在一个线程上调用GdiplusStartup,而在另一个线程上调用GdiplusShutdown”,这意味着您只需要为进程调用GdiplusStartup()一次(并从任何线程中使用)。

我不确定问题2。(我认为你的意思是你能同时调用Graphics::DrawImage(位图)吗?)您将在每个线程中创建不同的Graphics类,对吗?所以应该没有问题。

票数 3
EN

Stack Overflow用户

发布于 2010-01-30 11:10:10

安全注意事项: GDI+对问题2的部分答复

线程同步 多个线程可以访问单个GDI+对象。但是,GDI+没有提供任何自动同步机制。因此,如果应用程序中的两个线程具有指向同一个GDI+对象的指针,则同步访问该对象是您的责任。 如果某个线程试图调用方法,而另一个线程正在同一对象上执行方法,则某些GDI+方法返回ObjectBusy。不要尝试根据ObjectBusy返回值同步对对象的访问。相反,每次访问成员或调用对象的方法时,将调用放在关键部分中,或使用其他标准同步技术。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1722976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档