تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 2 از 2

نام تاپيک: سوال: علت نامگذاری asynchronous یا برنامه نویسی غیر همزمان

  1. #1
    پروفشنال Mr.World.Wide's Avatar
    تاريخ عضويت
    Apr 2009
    محل سكونت
    قم
    پست ها
    789

    پيش فرض سوال: علت نامگذاری 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؟؟؟

    ممنون میشم دوستان راهنمایی کنن

  2. #2
    کاربر فعال تالار .Net Msba's Avatar
    تاريخ عضويت
    Dec 2006
    محل سكونت
    ! My Mind
    پست ها
    506

    پيش فرض

    این را که گفتید تفاوت آن ها را می دانید را خوانده ام اما در توضیحات زیر به ناچار مجبور به تعریف های پیوسته از این دو لفظ هستم.
    لفظ Sync، در لغت به معنای همزمان هست اما نه به معنای همزمان! (همون مشکل فارسیه) بهتره به جای همزمان از یک معنای اصطلاحی استفاده کنیم و بگوییم همگرا.
    همان طور که می دانید در برنامه های Sync، خطوط برنامه به صورت ترتیبی و پیوسته انجام می شود یعنی تا زمانی که خطی اجرا نشود خطوط بعدی اجرا نمی شود. این همگرایی ترتیبی رو Sync گویند.
    اگر بخواهیم از همان لفظ همزمان استفاده کنیم، باید همزمان را از این زاویه ببینیم که یک بردار زمان برای آن ها وجود دارد و زمان های آن ها وابسته به هم هست. (بردار زمان برای کد ها، همان Thread هست).
    در مقابل کد های Async، دارای بردار های زمان مختلف هستند و ترتیب اجرای کد ها در دو بردار زمانی ارتباطی با هم ندارند. این عدم ارتباط باعث شده که لفظ Async استفاده شود.
    از طرفی آن تعریف شما که اجرای چندین کد با هم هست رو در برنامه نویسی علاوه بر Async، با Parallel نیز می شناسند. یعنی موازی، در کنار هم، که هیچ نقطه تلاقی ندارند.
    یعنی دو تا متد در دو زمان متفاوت اجرا میشه؟؟؟

    خب وقتی متد بلاک بشه تا رشته ما بره و متد دوم رو انجام بده و بعد برگرده متد اول رو ادامه بده ، در اینجا متد اول و دوم غیر همزمان هستند

    یعنی در دو زمان متفاوت اجرا شدند

    در حالیکه اگر هر دو متد با هم اجرا بشه در دو رشته مختلف خب یعنی همزمان هستند!!!
    همان طور که در بالا گفتم، دیدگاه نسبت به زمان و همزمانی از نظر اجرا نیست از نظر ترتیب هست. به همان بردار زمان دقت کنید.

    یک حالت خاص را بگویم که احساس می کنم در توضیحات شما پنهان است، ممکن است در برنامه یک Thread ایجاد شود و Thread ایجاد کننده بلافاصله منتظر اتمام Thread ساخته شده شود (Join)، در این حالت گرچه بردار زمان کد جدا می شود و برنامه در نگاه اول Async می شود، اما انتظار اتمام کد در Thread اول، باعث همزمانی ترتیبی بین دو Thread می شود. در واقع یکی از روش های Sync بین Thread ها همین Join هست.
    یکی از معناهای اصطلاحی دیگر Sync که در کد های Async وجود دارد، تطابق زمانی است. یعنی اگر روند اجرای یک Thread وابسته به Thread دیگر باشد (مانند مثال بالا) می بایست توسط برنامه نویس یک Sync بوجود آید (تطابق زمانی)
    بهتر است (خودم هم همین کار رو می کنم) برای Multi Threading و اجرای کد های موازی در کنار هم از لفظ Parallel استفاده شود چنانکه در توضیحات Threading در مستندات راهنما مانند [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] از همین لفظ استفاده می کنند.
    Parallel اصطلاحات دیگری نیز دارد که حالات Sync را داراست مانند کلاس Parallel در Task مربوط به Net. که با کد برنامه Sync (به معنای همگرایی ترتیبی) می شود.
    در ساده ترین نوع تعریف هم می توان گفت Sync یعنی وابسته به هم در اجرا و Async یعنی عدم وابستگی به هم در زمان اجرا!

    موفق باشید.
    Last edited by Msba; 26-01-2018 at 12:50.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •