السلام عليكم ...
asynchronous VS multi-threading
ياريت وانت بتقرا تكون فاضي ورايق لو مش فاضي دلوقتي ممكن تحفظه عندك و ترجعله بعدين
اتكلمنا المرة اللي فاتت عن يعني اي asynchronous واي الفرق بينها وبين الsynchronous وإزاي هيا كويسة لما يبقى عندي حاجة هتعملي بلوك للكود وتعطلني فهيا بتحللي الموضوع ده بإنها تشيل الجزء اللي بيعطلني ده على جنب علشان ما تعطلش باقي الكود من التنفيذ وفي نفس الوقت تروح تنفذلي حاجة تانية وبكدا أكون استفدت إني عملت كذا حاجة في نفس الوقت
-استنى كدا ...قصدك ايه بكذا حاجة في نفس الوقت؟ انت تقصد ان الasynchronous هيا هيا الmulti-threading بس مغيرة اسمها وبتشتغلنا؟؟
كدا انت غلطت وانا كنت مستنيك تغلط الصراحة عشان ندخل في موضوع النهاردة على طول واللي هنتكلم فيه عن الفرق بين الasynchronous و الmulti-threading لأن أغلب الوقت كل واحدة فيهم بتتشرحلنا لوحدها واللي بيوصلنا بعد كدا أنهم شبه بعض جدا لدرجة أنهم ممكن يكونوا نفس الحاجة أصلا بس اتشرحتلنا ب اسمين مختلفين بس مش أكتر أو إن الasynchronous مرتبطة بإن لازم يكون فيه أكتر من thread عشان أقدر أطبقها ومتنفعش مع الsingle threaded بس الحقيقة غير كدا خالص الasynchronous و الmulti-threading كل واحدة فيهم concept لوحده غير معتمد على التاني نهائيا في أي حاجة
وكلامنا النهاردة كله هيكون عبارة عن أمثلة بس مش أكتر وبإذن الله هتوضحلنا كل الكلام اللي قولناه فوق ده
بس عاوزين نقول كلمتين كدا الأول ونحطهم على جنب عشان ندي المثال اللي هنفهم بيه الفرق ده
asynchronous is about non-blocking
multi-threading is about parallelism
- ايه الكلام ده بقى؟
الكلام ده فيه ملخص كل اللي هنقوله النهاردة بس خلينا ندي مثال عشان نفهم يعني ايه الكلام اللي فوق ده وهنبدأ بأشهر مثال بيتقال لما بنشرح الasynchronous اللي هوا مثال المطعم والعامل اللي في المطعم
وهنفترض ان فيه مطعم كل عميل بييجي يقعد وبعدها ينادي على الموظف ده يطلب منه الطلب اللي محتاجه بعد كدا الموظف يروح يجهزله الطلب بتاعه ويرجع
وكان عندنا 4 مطاعم كل مطعم بيطبق طريقة معينة
-أول مطعم كان متبني فكرة الsingle threaded مع الsynchronous
-تاني مطعم كان متبني فكرة الmulti threaded مع الsynchronous
-تالت مطعم كان متبني فكرة الsingle threaded مع الasynchronous
-رابع مطعم كان متبني فكرة الmulti threaded مع الasynchronous
أول مطعم كان فيه موظف واحد طريقة شغله هوا لما أي عميل بيوصل بيبدأ يروح يشوف ايه الطلب بتاعه وبعدها يروح يجهز الطلب بتاعه في المطبخ ويجيبه وييجي بس مشكلة المطعم ده ان كان فيه اوقات كتير جدا كان بيوصل أكتر من عميل في نفس الوقت فبيضطروا ينتظروا لحد ما الموظف ياخد الطلب بتاع أول واحد ويروح يجهزه ويرجع بعدها ياخد طلب الشخص اللي بعده ويروح ينفذه ويطبخه ويرجع وطبعا كانت مشكلة كبيرة كل ما عدد العملاء بيكتر
فالناس بدأت تسيبهم وتروح للمطعم اللي بعده واللي كان متبني فكرة الmulti threaded مع الsynchronous قالوا بدل ما شخص واحد بس اللي يعمل كل حاجة احنا هنشغل 2 موظفين بدل واحد بس بنفس النظام اللي فوق وبدل ما عميل واحد بس يتخدم في المطعم بقى فيه 2 عملاء بيتخدموا في نفس الوقت كل موظف بيروح ياخد الطلب بتاع عميل واحد بس ويروح ينفذه وبعد ما يخلص ياخده يقدمه لصاحبه ويبدأ يشوف اللي بعده وهكذا
طبعا الموضوع بقى أحسن من المطعم الأول شوية بس لسة مش أحسن حاجة وجود اتنين موظفين شغالين على التوازي حسن الموضوع شوية بس لسة محتاجين تحسين أكتر
فالناس بدأت تروح تجرب المطعم التالت واللي كان متبني فكرة الsingle threaded مع الasynchronous فكان النظام فيه أنه موظف واحد موجود بس كان جدع أوي كان أول لما عميل يوصل ياخد الطلب بتاعه ويروح المطبخ ينفذه بس لو وصل أي عميل تاني بيوقف الطبخ ويروح يشوف طلبه وممكن يبدأ يطبخ في الطلب بتاعه مع الطلب التاني ويسيبهم على النار ويطلع لو فيه عميل وصل تاني ياخد طلبه ولو فيه أكل استوى ياخده يديه لصاحبه والمطعم ده كان أحسن بكتير من الاتنين اللي قبله بسبب مجهود أستاذ أحمد السقا معانا اللي كان دايما شغال ومش بيضيع وقت في إنه يعمل للعملاء اللي منتظرين بلوك وهوا قاعد في المطبخ أصلا مش بيعمل حاجة ومنتظر الأكل يستوي مش أكتر فالناس كلها بدأت تتجه للمطعم ده بس من كتر ما الناس عجبها بدأ يبان عيوب النظام ده واللي هوا السقا لوحده مش كفاية!!
فبدأ شوية شباب يفكروا وهما قاعدين ع القهوة في فكرة مشروع المطعم الرابع لما لاحظوا إن فكرة المطعم الأخير كانت ممتازة جدا بس لسه ممكن يحسنوها فيها وبالفعل بدأوا يطبقوا فيه فكرة الmulti threaded مع الasynchronous بحيث إنهم جابوا أكتر من موظف بس كلهم كانوا من نسل أستاذ أحمد السقا اللي كان شغال في المطعم التالت فبدل كان واحد بس يخدم المطعم كله بطريقة إنه ياخر الorder ويروح ينفذه بقى فيه أكتر من
>>Click here to continue<<
