【发布时间】:2014-01-30 17:18:40
【问题描述】:
我的 dll 有异步函数,它启动一个线程并立即返回。它接受事件对象的句柄(类型HANDLE),线程在完成时发出信号。这工作正常,但我怎样才能从它传递的函数返回结果并且没有发生错误?一个简单的布尔类型就可以了。
我正在考虑使用 GetLastError() 类型的调用来获取最后一个函数的结果,但我并没有真正以这种方式出售。我还查看了 std::future 和 std::async 但我不确定是否可以在 dll 函数中使用它!?我想到的另一个选择是使用GetOverlappedResult,但它通常适用于文件 i/o,我不知道是否可以将它用于我编写的自定义函数。
【问题讨论】:
-
如果线程接受一个 arg (HANDLE),它可能接受一个指向 malloced 结构的指针(带有 HANDLE、bool 和一些 char[42] 用于小错误消息)。调用者应仅在事件发出信号时释放。
-
你能将回调传递给“你的”
DLL函数吗? -
@Chad 回调可以消除事件,它对返回值有何帮助?
-
当值准备好返回时让
DLL调用回调函数。
标签: c++ multithreading dll std