گیاهی ترین گیاهی ترین AnzanDigital فروشگاه
خانه / برنامه نویسی ++C / برنامه نویسی چند نخی (Multi-Threaded)
450px-Multithreaded_process.svg

برنامه نویسی چند نخی (Multi-Threaded)

اصطلاح برنامه نویسی چند نخی (Multi-Threaded) :

معرفی Thread:

به صورت دقیق تر، اجرای Thread واحد های کوچکی از فرآیند(Process) است.

450px-Multithreaded_process.svg

  • توسط سیستم عامل زمان بندی می شود.
  • به طور کلی، در یک فرآیند (Process) قرار گرفته و چندین Thread می توانند در فرآیند یکسان قرار گیرند.
  • Thread ها منابع را با فرآیند به اشتراک میگذارند، حافظه، دستور العمل ها (instructions) و متغییر های سراسری (Global)
  • در یک پردازنده ی واحد، هر Thread نوبت خودش را بر پایه ی زمان مالتی پلکس شده دارد، در یک پردازنده ی چندگانه، هر Thread به صورت همزمان و با هسته های پردازنده اجرا می شوند.

فرآیند در مقابل Thread :

فرآیند می تواند یکی از برنامه های در حال اجرا بود. هر فرآیند به صورت مستقل از منابع سیستم همچون زمان پردزانده، حافظه و.. است. اگر بخواهیم بین فرآیند ها ارتباط برقرار شود نیازمند ارتباط inter-process همچون pipes،files، سوکت ها و.. خواهیم بود.

یک Thread اجرای منحصر به فردی در فرآیند است، هنگامی که یک Thread منابع فرآیند را دستکاری می کند، این تغییرات قابل مشاهده برای دیگر Thread های همزاد خواهد بود.

  1. فرآیند ها مستقل هستند در حالی که Thread ها در داخل فرآیند هستند.
  2. فرآیند ها آدرس های اختصاص یافته ی جداگانه ای دارند، در حالی که Thread ها فضای آدرس خود را به اشتراک می گذارند.
  3. ارتباط فرآیند ها توسط ارتباط inter-process انجام می پذیرد.
  4. فرآیند ها اطلاعات قابل توجهی از جمله وضیعت های اجرا،آماده بکار، انتظار و ایست را در بر دارند، در حالی که Thread ها در داخل فرآیند وضیعت ها را مانند حافظه و دیگر منابع به اشتراک میگذراند.
  5. تغییر Context بین Thread ها سریع از تغییر در فرآیند ها صورت می گیرد.
  6. برنانه چند نخی دارای اهمیت بیشتری نسبت به برنامه های چند فرآیندی هستند، چرا که مدیریت شاخه های بالامرتبه ی کمتری را دارند.

برنامه نویسی :

Pthread به چه معناست؟

  • Posix thread یا Pthread، استاندارد POSIX برای Thread ها است، رابط برنامه ی کاربری(API)ی است که ساخت و دستکاری thread ها را امکان پذیر می کند.
  • ساخت توسط این API در بیشتر سیستم ها بر پایه ی Unix امکان پذیر است، مانند FreeBSD،GNU/LINUX،MAC و Solaris، اما ویندوز نیز از pthread-w32 پشتیبانی میکند، که API مختص ویندوز به شمار می رود.
  • آخرین نسخه ی Pthread مربوط به سال 2004 می باشد.
  • Pthread بر پایه ی برنامه نویسی نوع C می باشد که نوع ها و رویه های فراخوانی ها در فایل Pthread.h گرد آوری شده است. در GNU/LINUX توابع PThread بر پایه کتابخانه های استاندارد c نوشته نشده است، بله از LIBPTHREAD بهره برده شده است، بایستی -lpthread را به برنامه ی خود لینک نماییم.

Pthread

API مربوط به Pthread :

در چهار دسته ی زیر تقسیم بندی می شود:

  • مدیریت Thread :

روتین هایی که مستقیماً بر روی Thread کار میکنند، ساخت، جدا سازی، اتصال و.. همچنین توابعی برای تنظیم query برای صفت های Thread همچون قابل اتصال بودن، زمان بندی و.. را شاملمی شود.

  • Mutexes:

روتین هایی با هماهنگ سازی سروکار دارند Mutex نامیده می شوند، که مخفف عبارت “انحصار متقابل – MUTual EXclusion” است.

  • متغییر های وضیعت (Condition variables):

روتین هایی که ارتباط بین Thread ها را که یک mutex به اشتراک می گذارد را آدرس دهی میکند.

  • هماهنگ سازی (Synchronization):

روتین هایی که مدیریت خواندن/نوشتن قفل ها و موانع را انجام می دهند.

 

ساخت Thread ها:

  • برنامه ی ()main به تنهایی، اولین thread پیش فرض است، تمام thread های دیگر صریحا باید توسط برنامه نویس ساخته شوند.
  • عمل pthread سازنده thread جدید و قابل اجرا کردن آن است.

منابع :: bogotobogo |

کانال تلگرام بیر رباتیک

درباره Ahrovani Hadi

مشاهده بیشتر

arducopter simulation

شبیه سازی اتوپایلوت و تشخیص کد های Aruco

ویدئوی پیوست شده شبیه سازی اتوپایلوت ardupilot با شبیه ساز gazebo را نشان میدهد. این …

دیدگاه بگذارید

اولین نفری باشید که دیدگاه میگذارد

با خبر سازی از
avatar

wpDiscuz