您可以將每個迭代作爲客戶關聯,並以靜態方式將每個客戶(客戶)分配給每個線程。
#pragma omp parallel for schedule(static, CHUNKSIZE)
for(i = 0; i < customer_max; i++)
{
// do something with customers
}
靜態:在這裏,他們執行的循環迭代之前,所有的線程分配迭代。迭代在默認情況下在線程之間被均分。但是,爲參數CHUNKSIZE
指定一個整數將爲特定線程分配塊數的連續迭代。
因此,在2個線程和4個客戶的例子中,你將使用CHUNKSIZE = 1。因此,線程0將執行兩種負荷消費0和2,而線2將執行負荷消費1和3
如果您不指定CHUNKSIZE
,線程0將執行前2個用戶,線程1執行剩餘的2個。
另一方面,如果您希望每個線程都以動態方式爲用戶提供服務,則可以使用動態分配。
#pragma omp parallel for schedule(dynamic)
for(i = 0; i < customer_max; i++)
{
// do something with customers
}
動態調度適用於構造的情況,迭代需要變化甚至不可預知的工作量。類似於你的情況,如果你有消費者服用不同的時間。
太棒了,非常感謝。我剛開始多處理,這將幫助我一噸。 – user1504257
Np,歡迎你。 – dreamcrash