想,如果我通過CreateThread()
創建5個線程。我需要intergers 1,2,3,4,5傳遞給每個線程,但我也必須通過this
指針。我不能傳遞多個參數,因爲CreateThread
函數只接受一個參數,也不能在類中創建成員變量,因爲它將在線程之間共享。如何做到這一點以及線程堆棧有多少數據?我如何將數據傳遞給不同的線程
1
A
回答
4
定義一個結構,並通過這個結構的目的。
的結構可以是這樣的:
struct ThreadContext
{
MyClass *m_this;
int m_int;
//add more members you need to pass more data
};
然後,你可以這樣做:
for (int i = 0 ; i < 5 ; i++)
{
ThreadContext *ctx = new ThreadContext();
ctx->m_this = this;
ctx->m_int = i ;
CreateThread(...., ThreadProc, ctx, ...);
}
確保你傳遞給每個線程的對象是不同的對象。這就是爲什麼我使用new
併爲每個線程創建一個對象。然後ThreadFunc
內,使用static_cast
爲:
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
ThreadContext *ctx = static_cast<ThreadContext*>(lpParameter);
//use ctx
//...
//at the end of the thread, deallocate the memory!
delete ctx;
}
或者,你可以保持std::vector<ThreadContext>
爲MyClass
成員數據。
+2
好答案!謝謝。 – user675341
+0
你可以考慮使用'ThreadContext'結構的模板參數,並使用它來代替'MyClass',這會使它更通用。 – Ajay
1
相關問題
- 1. 使用Poco C++庫,我如何將數據傳遞給線程?
- 2. 如何將參數傳遞給我的線程?
- 3. 如何將參數傳遞給c多線程中的線程
- 4. 如何將共享數據傳遞給Perl中的線程?
- 5. 如何將消息傳遞給線程
- 6. 如何將數據(結構)作爲消息傳遞給線程。
- 7. 如何將數據傳遞給UI線程
- 8. Java多線程 - 將數據結構傳遞給線程
- 9. 將Edittext傳遞給線程
- 10. 如何將數據傳遞給MVVM Light中的不同視圖?
- 11. 將數據傳遞給所有路線?
- 12. Android:將參數傳遞給線程
- 13. 將參數傳遞給Java線程
- 14. 將參數傳遞給多個線程
- 15. 將參數傳遞給線程
- 16. 將整數傳遞給線程
- 17. 將參數傳遞給線程
- 18. 將不同的值傳遞給java網絡中的線程?
- 19. ,數據如何傳遞給我的Chaincode?
- 20. 我如何將憑據傳遞給UIWebView?
- 21. 傳遞參數給線程
- 22. 傳遞參數給線程
- 23. 無法將不同的字符串傳遞給多個線程
- 24. 將執行傳遞給Java中的不同/特定線程
- 25. 我如何將頁面組值傳遞給SSRS中的不同數據集
- 26. 將不同的參數傳遞給IBAction
- 27. 如何將不同的數據值傳遞給Alfresco activiti多實例子進程
- 28. 如何將TIdTCPServer的多線串行數據傳遞給TIdTCPClient
- 29. 如何將文本文件中的行傳遞給java中的不同線程
- 30. 如何將多個參數傳遞給線程函數
http://www.codeproject.com/Tips/117653/C-MFC-Use-a-Thread-Delegator-for-your-threads – Ajay