چند تفاوت Thread و Process
مسئله Thread و Process دو موضوع نزدیک به هم ولی متفاوت هستن...
1- Process مستقل هستش، ولی Thread ها بخشی از یک Process هستن. (یعنی یک Process میتونه چندین Thread بوجود بیاره)
2- هر Process حافظه اختصاصی خودش رو داره، ولی Thread ها از حافظه اشغال شده Process استفاده می کنن. (یعنی هر Process حافظه خودش رو با Thread های خودش به اشتراک میذاره)
3- هر Process شامل یک برنامه و PID انحصاری هستش، ولی هر Thread شامل مجموعه ای از دستورالعمل ها و Stack انحصاری هستش.
4- هر Process درواقع یک Task هستش، ولی هر Thread یک Light wight process هستش.
5- Process ها توسط IPC (یا همون Inter-process communication) با یکدیگر ارتباط برقرار می کنن، ولی Thread ها توسط دستورات برنامه نویسی (در زبان PHP و Java توسط wait, notify و در زبان C توسط pthread_cond_wait, pthread_cond_signal) با یکدیگر ارتباط برقرار می کنن.
6- ساخت Process به سختی توسط duplicate کردن Process والد انجام میشه، ولی ساخت Thread براحتی توسط کپی شی Thread انجام میشه.
7- برای اجرای چند Process بطور موازی/parallel به یک سیستم Multi-Process نیاز هست، ولی برای اجرای چند Thread بطور همزمان به دستورات برنامه نویسی نیاز هست.
8- بطور کلی Process توسط CPU کنترل میشه، ولی Thread توسط Process کنترل میشه.
9- هر Process یک Thread main داره، ولی هر Thread فقط خودشه که کارگر/worker صدا زده میشه.
10- Process در فضای separate memory اجرا میشه، ولی Thread در فضای Shared memory اجرا میشه.
11- اگر یک Process کرش کند، معمولاً روی Process های دیگر تأثیر نمی گذارد. اما اگر یک Thread کرش کند، کل Process و تمام Thread های آن از کار می افتند.
12- ایجاد Process جدید هزینه بر است چون نیاز به اختصاص منابع جدید (حافظه، FD و...) دارد. اما ایجاد Thread بسیار سبک تر است چون منابع Process والد را به اشتراک می گذارد.
13- Process ها در تمام سیستم عامله ا به صورت استاندارد پیاده سازی شده اند. اما پیاده سازی Thread ها بین سیستم عامل ها متفاوت است (مثلاً Thread های POSIX در لینوکس vs Windows Threads).
و...

عالی بود