我有兩個函數。我將如何同時運行兩個函數?我知道應該使用線程。 我需要一個多線程的例子。我使用Visual Studio 2010同時運行兩個函數
Q
同時運行兩個函數
0
A
回答
2
您可以使用_beginthread
void CalculatePrimes(void*)
{
// Do something
}
void TransmitFile(void*)
{
// Do domething
}
int main()
{
uintptr_ x = _beginthread(CalculatePrices,0,NULL);
uintptr_ y = _beginthread(TransmitFile,0,NULL);
return 0;
}
如果你有訪問C++ 11可以使用std::thread:
void CalculatePrimes()
{
// Do something
}
void TransmitFile()
{
// Do domething
}
int main()
{
std::thread x(CalculatePrices);
std::thread y(TransmitFile);
// Both function are now running an different thread
// We need to wait for them to finish
x.join();
y.join();
return 0;
}
而且,如果你想深入瞭解金屬,您可以使用CreateThread api:
DWORD WINAPI CalculatePrimes(void *)
{
// Do something
return 0;
}
DWORD WINAPI TransmitFile(void *)
{
// Do something
return 0;
}
int main()
{
HANDLE x=::CreateThread(NULL,0,CalculatePrimes,NULL,0,NULL);
HANDLE y=::CreateThread(NULL,0,CalculatePrimes,NULL,0,NULL);
// Wait for them to finish
::WaitForSingleObject(x,INFINITE);
::WaitForSingleObject(y,INFINITE);
return 0;
}
1
如果您正在使用MFC,您可以使用AfxBeginThread
創建CWinThread
:
UINT SomeFunction(LPVOID pParam)
{
CSomeObject * pObject = (CSomeObject*)pParam;
// do stuff
return 0; // thread completed successfully
}
int main()
{
CSomeObject pObject = new CSomeObject;
AfxBeginThread(SomeFunction, pObject);
...
return 0;
}
欲瞭解更多信息,請參閱MSDN for AfxBeginThread。
1
< thread>的MSDN參考僅返回到VS2012,而不是VS2010。您可以更新到VS2012(您還需要運行Win 7或Win 8)。這是一個用C編寫的Windows控制檯程序的zip鏈接,它使用兩個線程來複制文件,創建一個線程來執行寫入。它使用Windows互斥鎖和信號量來實現線程間單鏈表消息傳遞接口。
相關問題
- 1. 兩個函數同時運行
- 2. 同時運行兩個函數
- 3. 同時運行兩個jQuery函數
- 4. 運行兩個不同的jQuery函數
- 5. 如何從一個類同時運行兩個函數? C#
- 6. 同時運行兩個類
- 7. 如何同時運行兩個數組
- 8. 同時執行兩個jquery函數
- 9. 如何用對象同時運行兩個函數?
- 10. 阻止在nodejs中同時運行兩個函數實例
- 11. Java多線程阻止兩個函數同時運行
- 12. Python多線程,同時運行兩個函數
- 13. 同時運行PHP函數?
- 14. 使2個函數同時運行
- 15. Python 3同時運行多個函數
- 16. codeigniter同時運行多個函數
- 17. 同時運行多個函數
- 18. PHP同時運行多個函數
- 19. 同時運行兩個定時器
- 20. matlab腳本是否可以同時運行兩個不同的函數
- 21. 在相同的運行時間運行兩個相同的DLL?
- 22. Swift - 如何在同一函數中爲兩個不同的SKNode同時運行兩個動作(線性模式)
- 23. 兩邊下劃線時運行函數
- 24. 同時運行兩個程序C/C++
- 25. 運行兩個CGI的同時
- 26. 兩個JFrames在同一時間運行
- 27. 如何同時運行兩個循環
- 28. 同時運行兩個活動
- 29. 同時運行兩個無限進程
- 30. 運行兩個實例的VLC同時
你必須寫一個MFC應用程序調用'AfxBeginThread' – Sean
@Sean真的,我錯誤地認爲是這樣的話,當我讀到「使用Visual Studio 2010」。編輯提到MFC的答案。 – schumacher574