基本上我有一個類,它是instincable(不是靜態的)。基本上我希望班級能夠生成自己的線程並管理自己的東西。我不想爲每個我創建的實例進行全局回調,這對我來說似乎並不乾淨。做我想做的事的正確方法是什麼?如果我嘗試將threadproc傳遞給CreateThread,並且它是來自類實例的proc,編譯器會說我不能這樣做。什麼是實現我想要的最好方式?謝謝線程處理一個instancable類?
0
A
回答
0
class Obj
{
static ULONG WINAPI ThreadProc(void* p)
{
Obj* pThis = (Obj*)p;
... do stuff ...
return 0;
}
void StartMemberThread()
{
CreateThread(... ThreadProc, this, ...);
}
};
最棘手的部分是確保線程不使用pThis後對象消失。
+0
我見過do-while循環,但從來沒有做過什麼。 – 2015-11-12 13:06:30
0
你想要做的是創建一個靜態成員方法,反過來調用threadproc成員。它需要一個指向類實例的指針來進行該調用,因此您需要將(this)作爲(void *)參數傳遞給CreateThread。
0
爲什麼在使用簡單的跨平臺解決方案(如boost::thread庫)時使用WIN32線程?這完全消除了你的問題。但是,如果您使用WIN32(或pthreads),則可以指定一個應該傳遞給線程例程的void *參數。所以,void *對象可以是一個指向類的指針;只需將其重新轉換爲線程例程中的正確類型即可。一旦將void *轉換回類型化指針,就可以調用該對象的成員函數。
P.S.這個詞是「可實例化」的。
相關問題
- 1. 創建一個類來處理線程
- 2. 的Java如何處理一個線程
- 3. ExecuterService停止處理兩個線程中的一個線程
- 4. 試圖處理一個類中的線程池
- 5. 線程處理
- 6. 處理線程
- 7. 異常在另一個線程處理創建另一個線程
- 8. 正確處理線程的類
- 9. 同時線程的圖像處理類
- 10. 在線程中處理任務的類
- 11. 如何處理具有多個線程的文件,以便每個文件僅由一個線程處理
- 12. 多線程處理?
- 13. IOCP線程處理
- 14. 多線程處理
- 15. Java線程處理
- 16. TWebModule處理程序中產生一個新的線程/進程
- 17. 處置另一個線程
- 18. 在一個線程池管理線程
- 19. Loopers - 處理程序 - 線程
- 20. 由java線程處理的多個任務延遲了另一個java線程
- 21. 處理一類
- 22. 如何在線程中處理線程?
- 23. 處理多線程的線程
- 24. 在Android中創建一個內部線程處理程序
- 25. 一個線程不響應,而應用程序處理
- 26. 如何從處理程序啓動一個Intent或線程?
- 27. 在現有線程的uncaughtexception處理程序中啓動一個新線程
- 28. 一個ajax處理程序或多個處理程序?
- 29. 同一種JVMTI EVENT由同一個線程處理?
- 30. 使用10個線程處理數組
不要重新發明輪子,查看現有庫的來源,如boost :: thread,Qt,ACE等。這已經完成了很多次。 – 2010-06-02 02:23:11