معنای Multi threading یا چند رشته ای در پردازنده ها
در این پروژه ما می خواهیم شما را با نحوه ی پردازش همزمان در حلقه های loop جداگانه و مستقل آشنا کنیم.در زبان تخصصی کامپیوتر thread معنای نخ یا موضوع می دهد. در کل thread به معنای یک دستور پردازشی میدهد و یک کار را دنبل می کند. زمانی که پای multi threading به میان می آید به این معنا است که چند کار یا هدف به صورت جداگانه و همزمان دنبال می شود.
وقتی میگوییم که پردازنده ی یک کامپیوتر چند هسته ای است این به این معناست که دستور های سنگین و محاسبات پیچیده ای که به هسته ی اول سپرده می شود به دستور های آسان تر و کوتاه تبدیل شده و میان هسته ها یا نخ های پردازنده تقسیم خواهد شد و به صورت همزمان وبا سرعت بیشتری انجام خواهد یافت.
به عنوان مثال تلفن های هوشمند امروزی حداقل دارای هشت هسته و در مدل های قدیمی تر دارای پردازنده ای چهار هسته ای اند. اگر دقت کرده باشید در نرم افزار های سنگین یا بازی های گرافیکی معمولا تبلت ها از سرعت کمتری برخورداد هستند ، چون تبلت ها معمولا با پردازنده های چهار هسته ای به بازار عرضه می شوند.
قطعات مورد نیاز این پروژه:
آردوینو due
آیا همه پردازنده ها و بردهای توسعه دهنده از برنامه نویسی چند نخی پشتیبانی می کنند؟
برای اینکه از دارا بودن این قابلیت مطلع شوید باید به بررسی مشخصات پردازنده ی کامپیوتر خود یا برد توسعه ی خود بپردازید.
شاید از خود بپرسید در میان برد های توسعه ی آردوینو کدام برد ها از قابلیت چند نخی پشتیبانی می کنند؟
درجواب این این سوال فقط می توان آردوینو due را نام برد،چراکه آردوینو های uno و nano از پردازنده atmrga328 استفاده می کند که می تواند یک دستور را در آن واحد اجرا کند
کتابخانه Scheduler.h
کتابخانه Scheduler.h این امکان را به شما می دهد تا در زمان برنامه نویسی در نرم افزار آردوینو برای برد Arduino DUE برنامه های چند نخی بنویسید یا چند حلقه Loop ایجاد کنید. به عنوان مثال می توانید برنامه ای بنویسید که به در آن واحد(یک لحظه) مقدار چند سنسور را بخواند و یا تاخیرهایی در هر حلقه ایجاد کنید که در اجرای دیگر حلقه ها هیچ تاثیری نداشته باشد.
دانلود کتابخانه مورد نیاز
جهت دانلود کلیک کنید <Scheduler.h>
کد پروژه
#include <Scheduler.h>; void setup (){ Scheduler.startLoop (loop2); Scheduler.startLoop (loop3); } void loop (){ } void loop2 (){ } void loop3 (){ yield (); }
منبع:الکترونیک98