استخر pool
اجرای موازی یک حلقه روی چند هستهی پردازنده.
واردسازی استخر
در این صفحه
اگر هر دور یک حلقه مستقل از بقیه است، مثل پردازش جداگانهی هر خانهی یک آرایه، برای موازی دورها را بین چند نخ کارگر پخش میکند و تا پایان همه صبر میکند. بدنهی حلقه یک روال با ورودی صحیح۶۴ است که شمارهی دور را میگیرد.
ترتیب اجرای دورها معلوم نیست. اگر دورها دادهی مشترکی را تغییر میدهند، از قفل یا اتمی استفاده کنید؛ نوشتن هر دور در خانهی خودش امن است.
روالها
تعداد پردازنده CPUCount
روال تعداد پردازنده(): صحیح۶۴تعداد هستههای پردازنده؛ دستکم ۱.
واردسازی استخر
واردسازی حافظه
ناپایا مربعها := پوچ برگردان صحیح۶۴*
روال ریشه:
سرچاپ استخر.تعداد پردازنده() >= ۱
مربعها = حافظه.تخصیص صفرشده(۸۰ برگردان طبیعی۶۴) برگردان صحیح۶۴*
استخر.برای موازی(۱۰، ۴، (ای: صحیح۶۴): مربعها[ای] = ای * ای پایان)
ناپایا جمع := ۰ برگردان صحیح۶۴
تکرار ۱۰ در ای:
جمع += مربعها[ای]
پایان
سرچاپ جمع
استخر.برای موازی خودکار(۱۰، (ای: صحیح۶۴): مربعها[ای] = -ای پایان)
سرچاپ مربعها[۹]
حافظه.آزادسازی(مربعها برگردان تهی*)
پایانخروجیtrue
285
-9
برای موازی ParallelFor
روال برای موازی(n: صحیح۶۴، workers: صحیح۶۴، body: روال(صحیح۶۴))بدنه را برای شمارههای صفر تا
n - 1 با workers نخ اجرا میکند و تا پایان همه صبر میکند.نمونهی این مورد همراه با موارد بالاتر آمده است: pool-ParallelFor.salam
برای موازی خودکار ParallelForAuto
روال برای موازی خودکار(n: صحیح۶۴، body: روال(صحیح۶۴))مثل
برای موازی، با یک نخ برای هر هسته.نمونهی این مورد همراه با موارد بالاتر آمده است: pool-ParallelFor.salam