علت نامگذاری asynchronous یا برنامه نویسی غیر همزمان
دوستان یه سوالی تو ذهنم اومده
من برنامه نویسی همزمان و غیر همزمان رو میدونم چیه
فقط سوال درباره کلمه ها هستش
اونم اینه که چرا میگیم همزمان؟؟
در برخورد اول وقتی که من کلمه همزمان رو میشنوم به ذهنم خطور میکنه که خب یعنی به صورت همزمان چند برنامه اجرا بشه
یا به صورت همزمان چند متد اجرا بشه
یا به صورت همزمان چند رشته اجرا بشه
ولی این ویژگی برنامه نویسی غیر همزمان هست
خب غیر همزمان با چی؟
یعنی دو تا متد در دو زمان متفاوت اجرا میشه؟؟؟
خب وقتی متد بلاک بشه تا رشته ما بره و متد دوم رو انجام بده و بعد برگرده متد اول رو ادامه بده ، در اینجا متد اول و دوم غیر همزمان هستند
یعنی در دو زمان متفاوت اجرا شدند
در حالیکه اگر هر دو متد با هم اجرا بشه در دو رشته مختلف خب یعنی همزمان هستند!!!
متوجه شدید منظورم چیه؟
یعنی من میگم باید به برنامه نویسی همزمان بگن غیر همزمان
و به غیر همزمان بگن همزمان
یعنی انگاری کلمه ها جا به جا استفاده شده
یا اینکه به خاطر زبان فارسی اینجوری معنی میده؟؟
یا کلا علت نام گذاری چیز دیگه ایه؟؟
شما حتی در معنی کلمه asynchronous هم اگر دقت کنید این رو نوشتند:
not going at the same rate and exactly together with something else, in particular.
not existing or happening at the same time.
یعنی میگه دو چیزی که همزمان با هم نباشند
با همدیگه اجرا نشند
خب ولی برنامه نویسی asynchronous یعنی متد های ما یا وظیفه های ما به صورت همزمان اجرا بشند
یعنی ما چندتا thread داشته باشیم که همزمان با هم یه بخشی از برنامه ما رو اجرا کنه
وقتی که همزمانی وجود داره چرا خب بهش میگن asynchronous؟؟؟
ممنون میشم دوستان راهنمایی کنن
3 پاسخ
سلام، وقت بخیر
این سوال برای خیلی ها پیش میاد و یه زمانی برای بنده هم این سوال پیش اومد. خاطرم نیست دقیق تو چه سایتی در این باره خونده بودم، اما به صورت خیلی ساده اینطور میشه توضیح داد:
«قطعه کدی که شما به صورت عادی اجرا می کنید، یعنی بدون استفاده از Thread ها و ...، این کد به صورت یکجا اجرا میشه و بعد روند اجرا به یک قطعه کد دیگه منتقل میشه، به همین خاطر بهش همزمان یا Synchronous گفته میشه، اما در زمان استفاده از Thread ها روند اجرا دائماً بین چندین قطعه کد جابجا میشه و به قولی کد مورد استفاده به صورت یکجا اجرا نمیشه و دائماً CPU بین کدها تو Thread های مختلف جابجا میشه، به همین خاطر بهش میگن غیرهمزمان یا Asynchronous»
به قولی که این همزمان با اون همزمان فرق میکنه، امیدوارم تونسته باشم منظور رو درست برسونم.
استاد من دیشب در موردش بیشتر خوندم
به این جواب رسیدم که این همزمانی و غیر همزمانی از زاویه جواب گرفتن مد نظر هست
یعنی از سمت زاویه جواب گرفتن هست که بهشون میگن همزمان و غیر همزمان
مثلا متد اول وقتی متد دوم رو درگیر میکنه متد دوم همون لحظه بهش جواب میده
مثال بزنم کمی شوخیه ولی جالبه مثالش
من میزنم توی گوش رفیقم و اونهم همزمان میزنه توی گوش من
یعنی جواب من رو همون لحظه میده این یعنی همزمانی
ولی یه وقتی هست که من میزنم توی گوش رفیقم ولی اون دستش بنده و نمیتونه همون لحظه جواب من رو بده
من میرم کارم رو انجام میدم تا رفیقم کارش تموم شه و بعد از اینکه کارش تموم شد میاد جواب سیلی من رو میده
این میشه غیر همزمان
یعنی از زاویه دید جواب گرفتن ، اگر همون لحظه که متد اولی میاد و متد دومی رو درگیر میکنه جواب بگیره میشه همزمان
ولی اگر بعد از درگیر کردن متد دوم ، متد اول به بقیه برنامه خودش مشغول باشه تا زمانی که متد دوم کارش به اتمام برسه میشه غیر همزمان
سلام مجدد، "گر همون لحظه که متد اولی میاد و متد دومی رو درگیر میکنه جواب بگیره میشه همزمان
ولی اگر بعد از درگیر کردن متد دوم ، متد اول به بقیه برنامه خودش مشغول باشه تا زمانی که متد دوم کارش به اتمام برسه میشه غیر همزمان"، دقیقاً درست متوجه شدید.