2012-12-04 138 views
0

您好我使用winapi的QueueUserAPC來調用另一個線程中的apc函數調用。 我的問題是,傳遞參數給它的最佳做法是什麼。 我指的是對象生命週期和分配/釋放責任。winapi apc函數參數傳遞 - 什麼是最佳實踐

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

我正在使用dwData傳遞參數來傳遞一些數據的指針,我想知道我該如何處理它。 我需要確保它一直存在,直到接收線程完成使用它。 我應該使用智能指針來確保數據在不再使用時被釋放嗎?

我想在調用線程和dealloc分配。在接收是可能的,但可能不是這樣一件好事。

什麼都可以做? 我想我想避免兩者之間的同步,只通知接收線程完成的數據...

謝謝!

回答

1

分配在發送線程中並在接收線程中釋放很容易,但它有可能會泄漏的主要缺點,即使您處理髮送失敗,接收線程可能會在有機會完成之前完成執行APC。

避免泄漏的最簡單方法可能是爲發送的數據創建一個隊列 - 可能是每個線程的隊列 - 當線程完成後,您將遍歷線程隊列並釋放所有未決數據。

但像往常一樣,魔鬼是在細節...

相關問題