【问题标题】:Safe method for stopping an operation inside a dll停止 dll 内操作的安全方法
【发布时间】:2013-08-01 11:20:09
【问题描述】:

假设您有一个带有函数Foo 的DLL,该函数的计数非常大,即for(int i = 0; i < 1,000,000,000; i++)while(something == true) 排序的循环,并且您希望能够从DLL 外部中断此函数,最安全的方法是什么?

提前致谢

【问题讨论】:

  • 你真的用gcc把你的代码编译成dll吗?
  • 是的,我需要跨平台的代码,所以决定使用 MinGW GCC。
  • 对可以从 DLL 外部设置的条件进行循环测试。
  • 这不会导致竞争条件问题吗?
  • 如果这个并发访问的变量不受保护:是

标签: c++ c gcc dll


【解决方案1】:

在 DLL 中声明一个标志,由 long-runner 测试。

向设置此标志的 DLL 添加一个方法。导出此方法。

添加访问标志时要使用的适当保护。


更新

在实例化标志时需要建立保护机制。

对于 DLL 全局标志,您将在 DLL 初始化期间创建一个 DLL 全局互斥体。

标志以及保护其访问的互斥体不需要从 DLL 外部访问。

【讨论】:

  • 只使用 std::atomic_bool 代替?
猜你喜欢
  • 2014-07-10
  • 1970-01-01
  • 2017-09-03
  • 1970-01-01
  • 1970-01-01
  • 2012-01-20
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多