2012-12-04 139 views
0

您好我使用winapi的QueueUserAPC来调用另一个线程中的apc函数调用。 我的问题是,传递参数给它的最佳做法是什么。 我指的是对象生命周期和分配/释放责任。winapi apc函数参数传递 - 什么是最佳实践

DWORD WINAPI QueueUserAPC(PAPCFUNC pfnAPC,HANDLE hThread,ULONG_PTR dwData);

我正在使用dwData传递参数来传递一些数据的指针,我想知道我该如何处理它。 我需要确保它一直存在,直到接收线程完成使用它。 我应该使用智能指针来确保数据在不再使用时被释放吗?

我想在调用线程和dealloc分配。在接收是可能的,但可能不是这样一件好事。

什么都可以做? 我想我想避免两者之间的同步,只通知接收线程完成的数据...

谢谢!

回答

1

分配在发送线程中并在接收线程中释放很容易,但它有可能会泄漏的主要缺点,即使您处理发送失败,接收线程可能会在有机会完成之前完成执行APC。

避免泄漏的最简单方法可能是为发送的数据创建一个队列 - 可能是每个线程的队列 - 当线程完成后,您将遍历线程队列并释放所有未决数据。

但像往常一样,魔鬼是在细节...

相关问题