تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

    Synchronous و Asynchronous چیست؟


    ۲۲ تیر ۱۳۹۹
    synchronous و asynchronous چیست؟

    اجرا عملیات به صورت Synchronous:

    Synchronous به معنی متصل و یا وابسته به هم است. وقتی شما عملیاتی را به صورت Synchronous اجرا می‌کنید، منتظر می‌مانید تا این عملیات تمام شود سپس می‌توانید عملیات دیگری را انجام دهید.

    به عبارت دیگر، Synchronous به این معنی است که اجرا عملیات در یک دنباله اتفاق می‌افتد. مثال:

    A -> B -> C -> D

    در این مثال ابتدا عملیات A آغاز می‌شود و بعد از پایان آن B. به همین طریق بعد از پایان عملیات B، عملیات C آغاز می‌شود و به همین شیوه تا انتها پیش می‌رود. اجرا عملیات به صورت Synchronous به نقطه آغاز و پایان ۲ و یا تعداد بیشتری عملیات اشاره می‌کند و نه اجرای آن‌ها. در این مثال نقطه پایان عملیات A با نقطه آغاز عملیات B همزمان است:

    SYNCHRONOUS
      |--------A--------|
                        |--------B--------|

    وقتی عملیات به صورت Synchronous اجرا می‌شود، شما منتظر می‌مانید تا اجرای یک عملیات تمام شود تا بتوانید عملیات دیگری را آغاز کنید. اجرای یک عملیات به اتمام عملیات قبلی وابسته است.

    مثال زیر اجرای عملیات به صورت Synchronous و در یک thread است:

    1 thread ->   |<---A---->||<----B---------->||<------C----->|

    مثال دیگری از اجرای عملیات به صورت Synchronous اما توسط چندین thread است:

    thread A -> |<---A---->|  
                           \ 
    thread B ------------>   ->|<----B---------->|  
                                                 \ 
    thread C ---------------------------------->   ->|<------C----->| 

    اجرا عملیات به صورت Asynchronous:

    زمانی که شما عملیاتی را به صورت Asynchronous اجرا می‌کنید، می‌توانید عملیات دیگری را اجرا کنید قبل از اینکه اجرا عملیات قبلی تمام شود. در پردازش و یا اجرا عملیات به صورت Asynchronous، نقطه آغاز و پایان اجرای عملیات با هم همزمان نیست:

    ASYNCHRONOUS
      |--------A--------|
            |--------B--------|

    در مثال بالا اجرای عملیات A با اجرای عملیات B هم‌پوشانی دارد. در واقع این دو عملیات با هم و یا در کنار هم و همزمان اجرا می‌شوند. وقتی عملیاتی به صورت Asynchronous اجرا می‌شود شما می‌توانید عملیات دیگری را اجرا کنید بدون اینکه لازم باشد تا اجرا عملیات قبلی به پایان برسد. به عبارت دیگر عملیات به یکدیگر وابسته و یا متصل نیستند.

    در دنیای برنامه‌نویسی عملیات و یا task‌ها بر روی thread اجرا می‌شوند. مهم است تا بفهمیم می‌توان چندین thread ایجاد کرد تا از انباشته شدن عملیات در یک صف جلوگیری کرد.

    همانطور که گفته شد مفهوم Synchronous و Asynchronous با thread‌ها چندان کاری ندارد و دلیلش هم این است که اجرای یک عملیات به صورت Asynchronous بر روی یک thread بسیار نادر و کم است (گرچه از نظر فنی امکان پذیر است).

    اجرای عملیات به صورت Asynchronous بر روی یک thread:

    اجرای عملیات به صورت asynchronous بر روی یک thread

    اجرای عملیات به صورت Asynchronous بر روی چندین thread:

    thread A ->     |<---A---->|
    thread B ----->     |<----B---------->|
    thread C --------->     |<------C--------->|

    نقطه آغاز و پایان اجرای عملیات با > و < نشان داده شده است.

    به بیان ساده‌تر:

    Synchronous:

    شما در یک صف قرار دارید تا یک بلیط برای یک فیلم را بخرید. شما به هیچ وجه نمی‌توانید یک بلیط تهیه کنید مگر اینکه تمام افرادی که در صف جلوی شما قرار دارند بلیط خود را تهیه کنند تا نوبت به شما برسد. این مثال برای تمام افرادی که پشت شما در صف قرار دارند نیز صادق است.

    Asynchronous:

    شما در یک رستوران هستید در حالی که مشتریان دیگری نیز در آنجا هستند تا همانند شما غذا میل کنند. حالا غذای خود را به مهماندار رستوران سفارش می‌دهید. در حالی که سایرین هم می‌توانند غذای خودشان را سفارش دهند. اما آن‌ها مجبور نیستند منتظر بمانند که سفارش شما پخت و سرو شود تا بتوانند سفارش خودشان را ثبت کنند. در آشپزخانه رستوران به صورت مداوم در حال پخت و سرو و دریافت سفارش‌های جدید هستند. مشتریان به محض اینکه سفارش‌شان پخته شود، آن را تحویل می‌گیرند.

    اشتباه متداول:

    وقتی شما به لغتنامه نگاه کنید شاید گیج شوید و این سوال را از خودتان بپرسید چیزی که باعث سردرگمی من می‌شود این است که:

    “چگونه ممکن است Synchronous به معنی همزمان باشد در حالی که در اینجا به معنی انجام عملیات یکی پس از دیگری است و نه به صورت همزمان. همچنین Asynchronous به معنی غیر همزمان است در حالی که در اینجا عملیات در کنار هم و همزمان انجام می‌شوند؟”
    شاید عجیب باشد اما Synchronous یعنی استفاده از یک clock cpu یکسان و زمانی که ۲ دستورالعمل و یا عملیات به صورت Synchronous هستند، آن‌ها از یک clock cpu یکسان استفاده می‌کنند و پشت سر هم و یکی پس از دیگری اجرا می‌شوند. Asynchronous یعنی عدم استفاده از یک clock یکسان و دستورالعمل‌ها به یکدیگر متصل نیستند. در واقع مفهوم Synchronous و Asynchronous به رابطه دستورالعمل‌ها و یا عملیات به یکدیگر اشاره نمی‌کند بلکه به رابطه آن‌ها با clock cpu اشاره می‌کند.

    منبع: https://medium.com/from-the-scratch/wtf-is-synchronous-and-asynchronous-1a75afd039df

    برچسب‌ها:

    ســــــــــــــــــــــال‌هاست که هستیم

    ۶ سال در کنار شما تجربه جمع کردیم. تازه در ابتدای مسیر هستیم، مسیر ساخت آینده.

    جمع‌مـــــــــــان، جمع است

    بیش از ۴۰ هزار توسعه‌دهنده و صاحبان کسب و کار در جمع ما هستند. جای شما خالی‌ست...

    خدمات رایگان لیارا

    ۲.۵ گیگابایت فضای ذخیره‌سازی ابری رایگان

    ۲.۵ گیگابایت Object Storage سازگار با پروتکل S3 با دیسک‌های SSD به‌صورت رایگان دریافت کنید.

    هاست رایگان برای دیتابیس‌

    دیتابیس‌های MariaDB، PostgreSQL و Redis را فقط با یک کلیک و به‌صورت رایگان تهیه کنید.

    سرویس DNS رایگان

    به سادگی دامنه‌تان را اضافه کنید و به صورت رایگان رکورد‌های آن را مدیریت کنید.

    ۱۰۰ هزار تومان اعتبار اولیه

    بعد از ثبت نام در لیارا مبلغ ۱۰۰ هزار تومان اعتبار هدیه دریافت می‌کنید که با توجه به ساعتی بودن هزینه سرویس‌ها، می‌توانید تمامی خدمات پولی را برای چندین هفته رایگان استفاده کنید.

    ارسال ۱۰۰ ایمیل تراکنشی رایگان در هر ماه

    در سرویس ایمیل لیارا شما می‌توانید تا ۱۰۰ ایمیل رایگان در هر ماه ارسال کنید. (به‌همراه دسترسی SMTP)

    هاست رایگان برای انواع وبسایت

    تفاوتی ندارد برای وبسایت خود از Node استفاده می‌کنید یا Laravel و Django، در لیارا می‌توانید به صورت کاملا رایگان آن را میزبانی کنید.

    همراه شما هستیم

    در خصوص سفارش یا استفاده از سرویس‌ها سوالی دارید؟
    تلفن واحد فروش:
    ۰۲۵-۳۳۵۵۷۶۱۹ (روزهای کاری ۹ الی ۱۷)
    تلفن واحد فروش: ۳۳۵۵۷۶۱۹-۰۲۵ (روزهای کاری ۹ الی ۱۷)