2012-08-25 24 views
0

我讀了一些關於這個問題的文章。這個案子似乎並不容易。我想在兩個核心中創建兩個不同的線程。我閱讀的文章太複雜了。我甚至無法根據這些文章創建一個簡單的線程。另一方面,我需要了解計算機必須具備多少內核,才能在一個內核上使用內核或只創建線程。我想在窗戶上做。 任何幫助將非常歡迎在C++中使兩個不同的核心中的兩個線程

P.S:我不是在C + +親。所以,如果有可能,請以更簡單的方式引導我。

+1

你能說出你正在考慮其操作系統或線程庫?如果你還沒有決定,你可以選擇兩種流行選擇的助推線或posix。 – MartyE

+0

@MartyE:我想在windows中編碼。無論如何,我打開任何圖書館建議 – Masoud

+1

gotcha(我現在看到在標題)。對於本機窗口方式,試試jerrycoffin的答案,如果它的工作接受它。其他選項將嘗試提升線程,雖然它似乎不建議 – MartyE

回答

5

雖然它通常是一個糟糕的主意(線程調度通常做本身就是一個更好的工作),其基本思想是:

HANDLE thread_a = CreateThread(/* ... */); 
HANDLE thread_b = CreateThread(/* ... */); 

SetThreadAffinityMask(thread_a, 1 << 0); 
SetThreadAffinityMask(thread_b, 1 << 1); 

注意,1<<01<<1可以很容易地被分別寫爲12 - 我只是想明確地表明每個位的位置代表一個處理器。

+0

謝謝。我應該使用哪個頭文件來使用這些拖拽?並有一種方法可以瞭解電腦中有多少核心可用。有沒有關於createthread函數的任何教程?我該如何啓動它?或者給它一個我想讓它成爲一個過程的功能? – Masoud

+0

@Masoud:至少如果內存服務的話,兩者都在''中。不確定關於教程,但您可能想在MSDN上查看它。 [GetProcessAffinityMask](http://msdn.microsoft.com/en-us/library/windows/desktop/ms683213.aspx)會給你屏蔽顯示可用的處理器。 –

+1

@Masoud - 雖然Jerry的回答很好,但也許你應該在嘗試任何這樣的「優化」之前做更多的研究和/或獲得更多的多線程體驗。我得到的感覺是,無論你想要做什麼,以及你的經驗水平,你都不會成功:( –

1

對於POSIX,檢查出pthread_getaffinity_nppthread_setaffinity_np

+0

感謝烈士。是posix包裝?有沒有關於它的好的和簡單的教程? – Masoud

相關問題