سلام به همه ی گلای توی خونه امیدوارم که حال دلتون خوب و جیبتون پر از پول باشه?
خوب دوستان عزیز یه سوال فابریک توی همه مصاحبه ها پرسیده میشه اونم اینه : تفاوت synchronous و asynchronous چیه؟؟?
خوب بچه ها من میخوام تفاوت این دو رو ، با یک مثال ساده که خودم از مهندس صیفوری عزیز یاد گرفتم توضیح بدم.
فرض کنید سه شخص میرن رستوران میخوان غذا سفارش بدن ، گارسون میاد سفارش ها رو بگیره ، ببینید اگر گارسون بیاد اول سفارش شخص اول رو بگیره بده به آشپزخونه و سفارش بقیه رو نگیره صبر کنه تا سفارش شخص اول آماده بشه غذاشو بده بعد بره سراغ نفر دوم سفارشش رو بگیره و منتظر بمونه تا سفارش شخص دوم آماده بشه بعد غذای اونو تحویل که داد بره سفارش نفر سوم رو بگیره ، در این صورت رفتار synchronous گونه یا بلاکینگ داشته.
دقیقا مثله سمت چپ عکس ببینید اول یه درخواست فرستاده بعد منتظر شده تا جواب بگیره و کار دیگه ای توی این مدت نکرده فقط منتظر جواب درخواستش مونده.
مثلا بچه ها جاوا به صورت دیفالت رفتار synchronous داره یعنی بالا سره پردازش میمونه تا تموم بشه یعنی main thread رو به شما میده.
حالا اگر اون گارسون عزیز بیاد سفارش نفر اول رو بگیره بده آشپزخونه و بعد صبر نکنه تا غذای شخص اول آماده شه بیاد برگرده و سفارش نفر دوم رو هم بگیره اونم بده به آشپزخونه و بعد صبر نکنه سفارش نفر سوم رو هم بگیره بده آشپزخونه تا سفارش اونم آماده کنن در این صورت گارسون رفتاری asynchronous گونه یا nonblocking داشته دقیقا مثله سمت راست شکل ببینید اومده یه درخواست داده منتظر جوابش نمونده رفته کاراش رو ادامه داده تا بعد که جواب درخواستش رو گرفته یا بالا سر درخواست نمونده تا جواب بگیره یه پردازش دیگه ای رو ادامه داده.
بچه ها جاوا اسکریپت رفتار asynchronous داره و بابت این رفتارش هم بسیار زبان زد و معروفه.
امیدوارم تونسته باشم تفاوت blocking vs nonblocking(synchronous vs asynchronous) رو به زبون ساده بگم?.
بازم از مهندس صیفوری بابت توضیح ساده و روانشون متشکرم امیدوارم بتونم یه روزی زحمت هایی که برای ما میکشن رو جبران کنم.❤