با استفاده از هدر یک برنامهٔ C++ بنویسید که یک آرایه از اعداد صحیح را به دو بخش تقسیم کند و با اجرای دو ترد همزمان مجموع هر بخش را محاسبه کند و در نهایت مجموع کل را چاپ نماید.
2.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:24 0.0
برای حل این مسئله از و std::thread استفاده کنید؛ هر ترد میتواند یک تابع یا لامبدا دریافت کند که بخش مشخصی از آرایه را جمع میزند و نتیجه را در یک متغیر مجزا قرار میدهد تا از شرایط رقابتی جلوگیری شود، سپس قبل از استفاده از نتایج از join() برای هماهنگسازی تردها استفاده کنید. در زمینههای بلادرنگ و محاسبات با کارایی بالا (HPC) این الگو سادهٔ موازیسازی مفید است؛ نکات کاربردی: اندازهی بخشها را متعادل انتخاب کنید، از اشتراک دادههای قابل نوشتن بدون قفل خودداری کنید یا در صورت نیاز از std::mutex استفاده کنید و برای بررسی بهبود کارایی میتوانید زمان اجرا را با std::chrono اندازهگیری کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای هماهنگی ایمن، هر ترد باید نتیجهٔ بخش خود را در یک متغیر محلی نگهداری کند و سپس نتیجهها با هم جمع شوند؛ از نوشتن مستقیم روی یک متغیر واحد جلوگیری کنید تا شرط رقابت به وجود نیاید. اندازهٔ بخشها را بهطور متوازن انتخاب کنید تا بار کار بین تردها مساوی باشد. در صورت نیاز از std::mutex یا std::atomic برای حفاظت از دادههای مشترک استفاده کنید. برای ارزیابیٔ کارایی، زمان اجرا را با std::chrono اندازهگیری کنید و نتیجه را تنها پس از join کردن تردها بخوانید.
گزارش