gpt4 book ai didi

multithreading - 这会使对象线程安全吗?

转载 作者:行者123 更新时间:2023-12-03 13:15:46 26 4
gpt4 key购买 nike

我有一个 native Visual C++ COM 对象,我需要使其完全线程安全,以便能够在系统注册表中合法地将其标记为“自由线程”。具体来说,我需要确保不超过一个线程同时访问对象的任何成员变量。

问题是我几乎可以肯定,我的 COM 对象的理智消费者不会尝试同时使用多个线程中的对象。所以我希望解决方案尽可能简单,只要它满足上述要求。

这就是我想出的。我添加了一个互斥锁或临界区作为对象的成员变量。每个 COM 公开的方法都将在开始时获取互斥体/部分,并在返回控制权之前释放。

我知道这个解决方案不提供细粒度的访问,这可能会减慢执行速度,但由于我认为不会真正发生同时访问,所以我不在乎。

这个解决方案就足够了吗?有没有更简单的解决方案?

最佳答案

这个解决方案应该可以工作,但我建议在关键部分使用互斥锁,因为它们处理超时,这在死锁的情况下提供了一定程度的回退。您还需要非常小心,锁定互斥锁的函数不会调用已在同一线程中锁定相同互斥锁的另一个函数。这对您的 COM 接口(interface)来说应该不是问题,只要您不在互斥锁之上向接口(interface)添加额外的功能。如果 COM 包含回调,您可能会遇到问题。

关于multithreading - 这会使对象线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2431386/

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