正如已經在標題中所述,我有大量的線程(可能遠遠高於100),而不是運行程序狀態。我只需要其中的幾個(足以使用所有物理處理器)來真正運行併發,其餘的應該等到其中一個運行被阻塞。發生這種情況時,應該運行一個新的。調度大量的線程,所以只有4個並行執行
是否有可能通過pthread例如pthread調度功能來實現這一點?你會如何做到這一點?
問候,
沒有人
編輯 更多信息: 每個線程從自身的taskpool獲取一份工作,去到某一點。 我需要100個線程來收集那些無法並行計算的程序執行點。計算完成後,線程應該被喚醒並繼續。爲了使這一有效的我必須避免浪費時間在100個線程之間進行切換,而不是4
你或許應該解釋一下爲什麼你需要的線程100S,而不是4個線程,其執行的線程池。 –
我不得不將其包含在框架中而不改變其結構。我可以將它編程爲只有4個線程,但是這會改變整個框架。所以我找到的唯一解決方案就是擁有那麼多通過框架的線程,並在收集點停下來。 – Nobody
您是否知道Python的Global Interpreter Lock?無論計算機中的物理處理器或內核的數量如何,它都可以一次阻止多個線程同時訪問Python對象。這發生在線程和信號量之下的某個級別。 – sizzzzlerz