هر برنامهای که در محیط ویندوز اجرا میشود، حداقل دارای یک پردازه است و هر پردازه دارای یک رشته یا thread اصلی است. این thread که یک مسیر اجرایی درون یک پردازه است، بهنام thread اولیه شناخته میشود و نقطه شروع برنامه را که معمولاً متد Main است، شامل میشود. این thread از نوع foreground است. اما یک برنامه محدود به یک thread نیست.
میتواند دارای threadهای دیگری نیز باشد که به آنها worker thread میگویند. رشتههایی که معمولاً آنها را میسازید بهصورت Background ساخته میشوند مگر اینکه وضعیت آنها را به foreground تغییر دهید. در نتیجه یک برنامه بسته به نوع کاری که انجام میدهد، میتواند دارای threadهای مختلفی باشد. در این حالت کاربر لازم نیست برای خاتمه یافتن یک کار صبر کند و در اصطلاح برنامه تا اتمام وظیفهاش freeze نمیشود.
با این روش برنامه روند اجرای عادی خود را ادامه میدهد. threadهایی که میسازید بهصورت پیش فرض Background هستند و متفاوت از thread اصلی برنامه که بهصورت foreground است، ساخته میشوند. هرچند میتوانید نوع آنها را تغییر دهید. اما سؤالی که ممکن است در ذهن بهوجود آمده باشد تفاوت Foreground background است. زمانیکه روی دکمه exit در یک برنامه کلیک میکنیم، در واقع thread اصلی برنامه را خاتمه میدهیم. در نتیجه Background threadها اگر کارشان تمام هم نشده باشد، خاتمه پیدا میکنند.
اما عکس این قضیه صادق نیست؛ زمانی که Background threads وظیفهشان را بهطور کامل انجام دادهاند، به پایان رسیده و از چرخه کاری سیستمعامل که به آن پردازه اختصاص داده شده است، خارج میشوند. اما از خصوصیات threadها میتوان به دستیابی آنها به دادههای یکدیگر درون همان پردازه اشاره کرد. بهطوری که میتوانید دادههای قرار گرفته درون یک thread را تغییر داده و دادههای تغییر یافته را در thread دیگری در اختیار داشته باشید.
برنامههای چندرشتهای میتوانند از قابلیت پردازندههای چند هستهای استفاده کنند. در یک کامپیوتر تک هستهای هر thread میتواند در یک time slice پردازنده اجرا شود که البته نحوه قرار گرفتن threadها روی پردازنده بستگی به حق تقدم یا priority آنها دارد بالاترین حق تقدم threadها همیشه با thread اصلی ویندوزاست که مسئول مدیریت دیگر رشتهها است. سپس threadهایی که دارای بالاترین حق اولویت هستند، اجرا میشوند.
بهطور کلی Background threadها برای کارهایی که ضروری نیستند و foreground برای کارهایی که اصلی هستند، میتوانند مورد استفاده قرار گیرند.
برنامه چیست؟
برنامه عبارت است از الگوریتمی که بر اساس یک رویه مناسب و منظم گردآوری شده است. منظور از رویه مناسب، زبان برنامهنویسی است که برنامه با آن بیان میشود. یک برنامه فقط قسمتی از یک پردازه است، در حالیکه پردازه عبارت است از موجودیتی پیچیده که به مراتب فراگیرتر از کدهای یک برنامه است و یک واحد کاری در سیستم عامل محسوب میشود.
زمانی که برنامهای فراخوانی میشود، پردازه مناسب آن ساخته میشود. همچنین یک برنامه میتواند دارای پردازههای مختلفی باشد. بهترین ابزاری که با استفاده از آن میتوانید برنامههای در حال اجرا روی سیستم را مشاهده کنید، Task Manager است که برنامهها و پردازهها را در دو زبانه یا تب متفاوت نشان داده است.