برنامه نویسی چند رشته ای در C و ++C اجازه می دهد تا برنامه ها به طور همزمان چندین کار را انجام دهند، عملکرد و پاسخگویی را بهبود بخشند، با این حال، طراحی سیستم های چند منظوره موثر نیاز به پیروی از اصول خاص برای جلوگیری از مسائل مانند شرایط نژادی، قفل های مرده و ناسازگاری داده ها دارد.این مقاله اصول کلیدی طراحی را که توسط نمونه های دنیای واقعی پشتیبانی می شود، مشخص می کند.

1- به اشتراک گذاری داده های مشترک

کاهش داده های مشترک بین موضوعات احتمال هماهنگ سازی مشکلات را کاهش می دهد، هنگامی که موضوعات بر روی داده های مستقل کار می کنند، نیاز به قفل کردن مکانیسم ها کاهش می یابد، که منجر به عملکرد بهتر و کد ساده تر می شود.

۲) استفاده از Synchronization مناسب

هنگامی که داده های مشترک ضروری است، هماهنگ سازی مناسب تضمین یکپارچگی داده ها. تکنیک ها شامل خاموش کردن، قفل های چرخش و متغیرهای وضعیت است.به عنوان مثال، یک مدل تولید کننده-مصرف کننده از یک خاموش و متغیر وضعیت برای هماهنگ کردن دسترسی به یک بافر مشترک، جلوگیری از شرایط مسابقه و اطمینان از سازگاری داده ها استفاده می کند.

۳- جلوگیری از Deadlocks

قفل های مرده زمانی اتفاق می افتد که موضوعات به طور نامحدود منتظر منابعی هستند که توسط یکدیگر نگه می دارند.برای جلوگیری از این، قفل ها را در یک سفارش ثابت به دست می آورند و مدت زمان قفل را به حداقل می رسانند.یک مثال سیستم پایگاه داده است که معاملات قفل های متعدد را به دست می آورند؛ ایجاد یک سفارش خرید قفل سخت و سخت از شرایط انتظار دایره ای اجتناب می کند.

۴- طراحی مقیاس پذیری

برنامه های چند منظوره مقیاس پذیر به طور موثر سازگار با تعداد موضوعات افزایش می یابد.استفاده از استخر های رشته برای مدیریت منابع و جلوگیری از ایجاد موضوعات بیش از حد.به عنوان مثال، یک برنامه سرور از یک استخر نخ برای کنترل اتصالات ورودی، حفظ عملکرد تحت بار بالا استفاده می کند.

۵- استفاده از عملیات اتمی در هنگام اولویت بندی

عملیات اتمی به روز رسانی های امن برای متغیرهای مشترک بدون قفل کردن صریح را ارائه می دهد، آنها برای مقابله یا پرچم مفید هستند، به عنوان مثال، افزایش یک شمارنده مشترک با استفاده از هسته ای و اضافه، اصلاح بدون قفل کردن سربار را تضمین می کند.