我知道Linux內核和libc中線程的實現在過去發生了很大變化。從C程序中使用線程的最佳方式是什麼? (我甚至不知道是否有多個API我可以使用 - 我只知道pthreads)當前在Linux中執行線程編程的正確方法
我不在乎太舊的內核和libc版本,但我做關心有效利用多核心和可移植性(我可能希望我的代碼也可以在其他Unix上工作)。
如果我只使用man 7 pthreads
中描述的Posix線程並將我的代碼限制在POSIX API中,那麼可以嗎?
編輯:謝謝所有回答。我確實想過使用一些可用的線程池庫,但對於這個項目來說,這確實不是一個選項。
多進程在同一臺機器上不能很好地擴展,往往需要3-4倍於小任務的工作量(因爲您需要實現一個通信機制,但仍然存在潛在的死鎖,活鎖和所有其他不希望的類型的「鎖定」)。但是,如果您可以不使用此方法,則可能會有更多的加速,因爲您可能能夠減少算法中的阻塞量。 – 2010-10-10 13:03:11
感謝您評論@San。你是對的;如果流程之間需要進行大量的溝通,多個流程不能很好地擴展。我已經修改了我的答案來澄清這一點。 – 2010-10-10 13:06:54