السلام عليكم....
المرة اللي فاتت كملنا كلامنا عن الmulti threading و كنا بدأنا نشوف ليه استخدام ال multi threading مش سهل وهيبدأ يدخلني في مشاكل كتير ولو حابب ابعد عن المشاكل دي هدخل نفسي في تعقيدات كتير جدا انا في غنى عنها وكنا بدأنا نشوف المره اللي فاتت حاجه مثال على مشكلة من المشاكل اللي ممكن تواجهني لما استخدم الmulti threading و النهارده باذن الله هنتكلم عن مشكلة تانيه ممكن تواجهني مع استخدام الmulti threading
المرة اللي فاتت كملنا كلامنا عن الmulti threading و كنا بدأنا نشوف ليه استخدام ال multi threading مش سهل وهيبدأ يدخلني في مشاكل كتير ولو حابب ابعد عن المشاكل دي هدخل نفسي في تعقيدات كتير جدا انا في غنى عنها وكنا بدأنا نشوف المره اللي فاتت حاجه مثال على مشكلة من المشاكل اللي ممكن تواجهني لما استخدم الmulti threading و النهارده باذن الله هنتكلم عن مشكلة تانيه ممكن تواجهني مع استخدام الmulti threading
Web Development Code
Photo
وكلامنا النهاردة عن مشكلة الrace condition
- ايه هيا الrace condition دي؟
الrace condition ببساطه هيا لما يكون عندي 2threads او اكتر بيحاولوا يوصولوا لداتا معينه تكون shared مابينهم وكل واحد فيهم محتاج يغير في الداتا دي
- ايه الكلام ده مش فاهم حاجه؟
بص خلينا نقول قصة كدا بسيطة تحاول تبسطلنا الموضوع على قد ما نقدر
القصه دي بتاعت الحاجه ام محمود وأولادها أم محمود عندها ولدين أول واحد اسمه خالد والتاني اسمه عمر
(أم محمود ده اسم مركب زي ام كلثوم كده)
عمر كان عاوز يشتري لعبة ب 60 جنيه من على امازون وهيدفع عن الاستلام بس طبعا الفلوس مش معاه الفلوس مع الحاجه ام محمود ف راح سألها يا حاجه انتي معاكي فلوس كام قالتله معايا 100 جنيه قالها تمام كويس وسابها ومشى بعدها بشوية ام محمود لقت خالد داخل عليها بيسألها يا حاجه انتي معاكي كام فلوس قالتله 100 جنيه قالها تمام كويس وسابها ومشى خالد طبع كان بيسألها عشان هوا كمان عاوز يشتري لعبة من على امازون ب70 جنيه وهيدفع هو كمان عند الاستلام ولما سابها ومشى كان راح يطلب اللعبة دي وفي نفس الوقت عمر هو كمان كان بيطلب اللعبه لأنهم هما الاتنين سألوا امهم معاكي فلوس قد ايه وقالتلهم معايا 100 وكل واحد قال كدا تمام يبقى هقدر اشتري لعبتي طبعا حضراتكم عارفين تكملة القصه لما المندوب وصل ام محمود عملت ايه لخالد وعمر.......
- ايه هيا الrace condition دي؟
الrace condition ببساطه هيا لما يكون عندي 2threads او اكتر بيحاولوا يوصولوا لداتا معينه تكون shared مابينهم وكل واحد فيهم محتاج يغير في الداتا دي
- ايه الكلام ده مش فاهم حاجه؟
بص خلينا نقول قصة كدا بسيطة تحاول تبسطلنا الموضوع على قد ما نقدر
القصه دي بتاعت الحاجه ام محمود وأولادها أم محمود عندها ولدين أول واحد اسمه خالد والتاني اسمه عمر
(أم محمود ده اسم مركب زي ام كلثوم كده)
عمر كان عاوز يشتري لعبة ب 60 جنيه من على امازون وهيدفع عن الاستلام بس طبعا الفلوس مش معاه الفلوس مع الحاجه ام محمود ف راح سألها يا حاجه انتي معاكي فلوس كام قالتله معايا 100 جنيه قالها تمام كويس وسابها ومشى بعدها بشوية ام محمود لقت خالد داخل عليها بيسألها يا حاجه انتي معاكي كام فلوس قالتله 100 جنيه قالها تمام كويس وسابها ومشى خالد طبع كان بيسألها عشان هوا كمان عاوز يشتري لعبة من على امازون ب70 جنيه وهيدفع هو كمان عند الاستلام ولما سابها ومشى كان راح يطلب اللعبة دي وفي نفس الوقت عمر هو كمان كان بيطلب اللعبه لأنهم هما الاتنين سألوا امهم معاكي فلوس قد ايه وقالتلهم معايا 100 وكل واحد قال كدا تمام يبقى هقدر اشتري لعبتي طبعا حضراتكم عارفين تكملة القصه لما المندوب وصل ام محمود عملت ايه لخالد وعمر.......
كفايه كدا حكاوي عشان متنامش مننا ونرجع تاني لأصل الموضوع اللي بنتكلم عنه وهوا الrace condition واللي هنقول تعريفه اللي قولناه فوق مره تاني
الrace condition ببساطه هيا لما يكون عندي 2threads (خالد و عمر) او اكتر بيحاولوا يوصولوا لداتا معينه تكون shared (أم محمود) مابينهم وكل واحد فيهم محتاج يغير في الداتا دي (يشتري اللعبه بتاعته ويصرف الفلوس بتاعت أم محمود)
وعلشان نشوف المشكلة دي عملي هنحاول نكتب الكود بتاع أم محمود ونشوفه ونشوف المشاكل اللي هتصحلي في الكود.....
الrace condition ببساطه هيا لما يكون عندي 2threads (خالد و عمر) او اكتر بيحاولوا يوصولوا لداتا معينه تكون shared (أم محمود) مابينهم وكل واحد فيهم محتاج يغير في الداتا دي (يشتري اللعبه بتاعته ويصرف الفلوس بتاعت أم محمود)
وعلشان نشوف المشكلة دي عملي هنحاول نكتب الكود بتاع أم محمود ونشوفه ونشوف المشاكل اللي هتصحلي في الكود.....
وده كود بيستخدم 2threads أول thread واللي بيمثلنا عمر بيبدأ يشتغل وبيعمل check على فلوس الحاجه ام محمود اكتر من 60 ولا لا والcheck بينجح فبيدخل ينفذ اللي جوا واللي هوا عباره انه يروح ينفذ عملية الطلب والعملية دي بتاخد وقت فمثلناها هنا انه بيقعد ثانيه يعمل الحاجه دي في نفس الوقت ده الthread التاني واللي بيمثلنا خالد بيروح يتنفذ وأول حاجه بيروح يعمل check هل فلوس الحاجه 70 او اكتر وبينجح الcheck ده لأن عمر لسه ما خصمش من الفلوس وبيدخل جوا ينفذ نفس العملية بتاعت عمر وتتفاجئ أم محمود انها بقى عليها دين ب 30 جنيه وتضطر تكلم امبر هيرد عشان تعرف اجراءات اعلان الافلاس .....
Web Development Code
سؤال JS : ليه الكود اتنفذ كده .. قول السبب فالتعليقات. #js
هو انا مش شايف تفاعل لي ؟
انا غلطان يعني ان بنشر حاجه.
اقفل القناه احسن؟؟
انا غلطان يعني ان بنشر حاجه.
اقفل القناه احسن؟؟
اتمني كل شاب يسمعو بجد ..
بين الحياة الجامعية .. والمستقبل ( رحلة .. اصنع فيها نجاحك )
الخلاصة 👇🏻
لو انت عندك النهارده مشكله .. انت ممكن تغير العالم كلو
ببساطه شوف امكانياتك اي .. وحل المشكله دي 👌🏻
https://m.facebook.com/story.php?story_fbid=pfbid029BRVnMRyxi9JrZi9NBnQJs31gcfHm1fjRWp8ofnpxddqbToeGurtsStH2dEMfZVGl&id=100028088954650 👏🏻
بين الحياة الجامعية .. والمستقبل ( رحلة .. اصنع فيها نجاحك )
الخلاصة 👇🏻
لو انت عندك النهارده مشكله .. انت ممكن تغير العالم كلو
ببساطه شوف امكانياتك اي .. وحل المشكله دي 👌🏻
https://m.facebook.com/story.php?story_fbid=pfbid029BRVnMRyxi9JrZi9NBnQJs31gcfHm1fjRWp8ofnpxddqbToeGurtsStH2dEMfZVGl&id=100028088954650 👏🏻
Facebook
Log in or sign up to view
See posts, photos and more on Facebook.
Web Development Code
Photo
السلام عليكم ...
المرة اللي فاتت اتكلمنا مع بعض شوية عن مفهوم الrace condition وبتحصل امتى وادينا مثال عليها و أثبتنا مع بعض انه ازاي الmulti threading مش دايما بيبقى أطيب من الأستاذ بهاء سلطان ولا حاجه
ووقفنا المرة اللي فاتت عند مشكلة الحاجه أم محمود وشوفنا مع بعض مشكلة من مشاكل الmulti threading بسبب ان فيه 2threads مشتركين مع بعض resource واحده وكل واحد فيهم بيقرا نفس القيمة وبعدها يروح يعمل check على القيمة اللي قرأها دي وفي الحالتين القيمة الأولى بتحقق condition بتاعت كل thread فبيبدأ كل واحد فيهم يدخل في الكود الخاص فيه ويسببلي مشكلة كبيرة بعد كدا
- طيب ايه الحل دلوقتي ؟
الحل هوا الlock
-ايه الlock ده هنقفل على ام محمود؟
اه حاجه زي كدا بالظبط
في المثال البسيط بتاع المرة اللي فاتت ان الأول عمر راح سأل والدته وبعدها سابها ومشى بعد كدا لما اخوه جه سألها برضو جاوبته عادي جدا لأن مفيش اي حاجه تمنعها من كدا ف الجماعه بتوع الsoftware قالك طيب ما لو الحاجه ام محمود كانت رفضت تقول لخالد هيا معاها فلوس كام لأن عمر سألها ومحتاج يعمل عملية بالفلوس دي
ايه هيا العملية وقد ايه لسه مش عارفه بس طالما سألني يبقى هو محتاج يعمل حاجه بالفلوس دي فلما عمر جالها قالتله استنى دلوقتي اصبر عشان أخوك سألني من شوية ومشى فأكيد هو هيعمل حاجه وهيخصم من الفلوس دي اصبر لحد ما نشوف هو هيعمل ايه وهياخد كام وبعدها هقولك انا باقي معايا كام وبس كدا بكل بساطة أم محمود حلت مشكلة الrace condition بسهولة خالص بمفهوم الlock لأن المشكلة أساسا في الأول كانت بتحصل عندي لما 2threads يبقى ليهم access في نفس الوقت لshared resource فاللي أنا هعمله دلوقتي اني بمجرد ما thread يوصل للداتا دي هيعمل بلوك لأي thread تاني من انه يوصلها إلا لما يخلص من خلال الlock وبعدها يفك الlock اللي عمله عليها ده وييجي الthread اللي بعده يعمل عليها lock برضو بحيث انه يمنع اي thread تاني أنه يوصلها لحد ما يخلص شغله ويفك الlock ده فاللي هيحصل عندنا انه أول thread هيوصل للداتا هيعملها lock بمعنى انا مش ملزم كل مرة thread 1 اللي شغلناه الأول يوصل الأول مش شرط دي حاجه زي ما قولنا معتمدة على الos وعوامل تانية ملناش دعوه بيها دلوقتي بس اللي حصل دلوقتي اني حليت المشكلة الكبيرة وبدل ما أم محمود تلاقي نفسها مديونه بعد ما الاتنين threads (خالد وعمر) يستخدموا فلوسها هيا قدرت تنظم الموضوع بطريقة بسيطة جدا
وزي كل مرة عملنا كود بسيط يوضحلنا الconcept ده ازاي بيتحقق عندنا في الreal life وده نفس الكود بتاع المرة اللي فاتت بس الفرق اننا استخدمنا الlock المرادي وده عملنا ظلم شوية بين الأخين بسبب ان عمر وصل الأول وقدر يقلب الحاجه في الفلوس وعلى ما خالد وصل كانت الحاجه اتقلبت وما قدرتش توفرله الcondition بتاعه فمقدرش يتنفذ وحافظلي على الlogic بتاع الsystem من انه يبوظ أو ان أم محمود تعلن افلاسها
المرة اللي فاتت اتكلمنا مع بعض شوية عن مفهوم الrace condition وبتحصل امتى وادينا مثال عليها و أثبتنا مع بعض انه ازاي الmulti threading مش دايما بيبقى أطيب من الأستاذ بهاء سلطان ولا حاجه
ووقفنا المرة اللي فاتت عند مشكلة الحاجه أم محمود وشوفنا مع بعض مشكلة من مشاكل الmulti threading بسبب ان فيه 2threads مشتركين مع بعض resource واحده وكل واحد فيهم بيقرا نفس القيمة وبعدها يروح يعمل check على القيمة اللي قرأها دي وفي الحالتين القيمة الأولى بتحقق condition بتاعت كل thread فبيبدأ كل واحد فيهم يدخل في الكود الخاص فيه ويسببلي مشكلة كبيرة بعد كدا
- طيب ايه الحل دلوقتي ؟
الحل هوا الlock
-ايه الlock ده هنقفل على ام محمود؟
اه حاجه زي كدا بالظبط
في المثال البسيط بتاع المرة اللي فاتت ان الأول عمر راح سأل والدته وبعدها سابها ومشى بعد كدا لما اخوه جه سألها برضو جاوبته عادي جدا لأن مفيش اي حاجه تمنعها من كدا ف الجماعه بتوع الsoftware قالك طيب ما لو الحاجه ام محمود كانت رفضت تقول لخالد هيا معاها فلوس كام لأن عمر سألها ومحتاج يعمل عملية بالفلوس دي
ايه هيا العملية وقد ايه لسه مش عارفه بس طالما سألني يبقى هو محتاج يعمل حاجه بالفلوس دي فلما عمر جالها قالتله استنى دلوقتي اصبر عشان أخوك سألني من شوية ومشى فأكيد هو هيعمل حاجه وهيخصم من الفلوس دي اصبر لحد ما نشوف هو هيعمل ايه وهياخد كام وبعدها هقولك انا باقي معايا كام وبس كدا بكل بساطة أم محمود حلت مشكلة الrace condition بسهولة خالص بمفهوم الlock لأن المشكلة أساسا في الأول كانت بتحصل عندي لما 2threads يبقى ليهم access في نفس الوقت لshared resource فاللي أنا هعمله دلوقتي اني بمجرد ما thread يوصل للداتا دي هيعمل بلوك لأي thread تاني من انه يوصلها إلا لما يخلص من خلال الlock وبعدها يفك الlock اللي عمله عليها ده وييجي الthread اللي بعده يعمل عليها lock برضو بحيث انه يمنع اي thread تاني أنه يوصلها لحد ما يخلص شغله ويفك الlock ده فاللي هيحصل عندنا انه أول thread هيوصل للداتا هيعملها lock بمعنى انا مش ملزم كل مرة thread 1 اللي شغلناه الأول يوصل الأول مش شرط دي حاجه زي ما قولنا معتمدة على الos وعوامل تانية ملناش دعوه بيها دلوقتي بس اللي حصل دلوقتي اني حليت المشكلة الكبيرة وبدل ما أم محمود تلاقي نفسها مديونه بعد ما الاتنين threads (خالد وعمر) يستخدموا فلوسها هيا قدرت تنظم الموضوع بطريقة بسيطة جدا
وزي كل مرة عملنا كود بسيط يوضحلنا الconcept ده ازاي بيتحقق عندنا في الreal life وده نفس الكود بتاع المرة اللي فاتت بس الفرق اننا استخدمنا الlock المرادي وده عملنا ظلم شوية بين الأخين بسبب ان عمر وصل الأول وقدر يقلب الحاجه في الفلوس وعلى ما خالد وصل كانت الحاجه اتقلبت وما قدرتش توفرله الcondition بتاعه فمقدرش يتنفذ وحافظلي على الlogic بتاع الsystem من انه يبوظ أو ان أم محمود تعلن افلاسها
Web Development Code
السلام عليكم كام واحد هنا مهتم بلغه python ؟
نزل يمحترم من غير متسأل
Web Development Code
Photo
السلام عليكم ..
اتكلمنا قبل كدا عن الthreads واي هيا الthread و بدأنا بعد كدا نتكلم عن الmulti threading وشوفنا مزاياها بعد كدا بدأنا نتكلم عن بعض العيوب و المشاكل اللي بتواجهنا في استخدام الmulti threading ووقفنا المرة اللي فاتت عن حل لمشكلة الrace condition واللي كان عن طريق استخدام الlock والنهاردة بإذن الله هنتكلم عن مشكلة جديدة بسبب الlock
- ايه ده!! إذا كان احنا عملنا الlock علشان يحللنا مشكلة يقوم هوا اللي يعملنا مشكلة!!
صدقتني بقى لما قولتلك الmulti threading مش أطيب من أستاذ بهاء ولا حاجه وان مشاكله كتير
- …!
ما علينا المهم اننا هنتكلم النهاردة عن مشكلة جديدة من مشاكل الmulti threading وهيا الdead lock
-ايه هيا الdead lock وبتحصل ليه وامتى؟
تعريف الdead lock هو :
A deadlock is created when two applications lock data that is needed by the other, resulting in a situation in which neither application can continue executing.
يعني ايه الكلام ده بقى؟؟
بص فاكر مثال المرة اللي فاتت بتاع أم محمود اللي ملناش غيرها
- اه, بس زهقت منها
خلاص عشان خاطرك هنحاول نشوف مثال تاني المرة دي بما إننا فهمنا الأساسيات المرة اللي فاتت فهنقول مثال عملي شوية في system فهنفترض ان فيه system بتاع بنك الsystem ده بيستخدم الmulti threading في شغله بس اتعلم من غلطة الحاجة أم محمود وبقى يستخدم lock عشان ميحصلش عنده مشاكل فوصل عنده عميل في الفرع الأول اسمه خالد حابب يعمل عملية تحويل لحساب شخص تاني اسمه عمر
- ايه ده مش دول ولاد الحاجه ام محمود؟
اه ربنا كرمهم من تقليب امهم وفتحوا حسابات في البنك, بس مش ده المهم دلوقتي المهم ان اللي هيحصل دلوقتي في الsystem في عملية التحويل
أول حاجة زي ما اتكلمنا المرة اللي فاتت عشان بنستخدم الmulti threading ف الsystem أول حاجه هيعملها أنه يعمل lock على حساب خالد عشان يعمل شوية عمليات وchecks يتأكد ان خالد ده مسموحله يعمل العملية دي ولا لا
-طيب بعد كدا؟
بعد كدا هيبدأ يخصم من حساب خالد وبعدها يروح يشوف عمر ويشوف هل مسموحله يتحول ليه المبلغ ده ولا لا وبعدها يضيف اللي خصمه لحساب عمر
- بس حاسب قبل ما يعمل الcheck ويضيف لحساب عمر لازم يعمل على حساب عمر lock الأول
صح فعلا كدا انت مركز معايا قبل طبعا ما يضيف على حساب عمر القيمة دي هيعمل عليه lock والعملية تتم بسهولة خالص بدون أي مشاكل والlocks دي تتشال من على عمر وخالد بعد ما العملية تخلص
- طب ما الدنيا جميلة اهي ومفيش مشاكل اهو
اصبر عليا المشاكل جاية قدام
تاني يوم خالد وصل تاني للفرع الأول عشان يعمل عملية تحويل تاني لاخوه عمر بس الصدفة ان عمر هوا كمان وصل الفرع التاني من البنك علشان هيعمل عملية تحويل لاخوه خالد وبالصدفة البحته اللي مش بتحصل غير في الأفلام الهندي عمر وخالد وصلوا في نفس الثانية ودخلوا للموظف في نفس الثانية والموظفين الاتنين في الفرع الأول والفرع التاني نفذوا عملية التحويل في نفس الثانيه من على الsystem وطبعا عشان الsystem ده multi threading فكل عملية فيهم بتحصل على thread مختلف فاللي هيبدأ يحصل:
(خالد🔓🔓) (عمر🔓🔓)
الفرع الأول: الthread الأول هيبدأ يعمل lock على حساب خالد
(خالد🔒🔒T1) (عمر🔓🔓)
الفرع التاني: الthread التاني هيبدأ يعمل lock على حساب عمر
(خالد🔒🔒T1) (عمر🔒🔒T2)
الفرع الأول: خلص check على حساب خالد وخصم منه المبلغ
(خالد🔒🔒T1) (عمر🔒🔒T2)
الفرع التاني: خلص check على حساب عمر وخصم منه المبلغ
(خالد🔒🔒T1) (عمر🔒🔒T2)
الفرع الأول: بدأ يعمل lock على حساب عمر عشان يضيف ليه المبلغ بس لقاه اساسا مشغول مع thread تاني ومعموله lock فقعد منتظر لحد ما الlock يتفك عنه
(خالد🔒🔒T1) (عمر🔒🔒T2)
الفرع الأول: بدأ يعمل lock على حساب خالد عشان يضيف ليه المبلغ بس لقاه اساسا مشغول مع thread تاني ومعموله lock فانتظر لحد ما يخلص
-طيب وبعدين؟؟
بس كدا مفيش بعدين بوست النهارده كدا خلص
ايه ده مش هتستنى لحد ما الsystem يخلص عملية التحويل
لا
-ليه
عشان مش هيخلص عملية التحويل هيفضل بالمنظر ده طول ما الsystem شغال
thread 1
مستنى
thread 2
يفك الlock
عشان يكمل شغله و thread 2 مستنى thread 1 يفك الlock عشان يكمل شغله وفي الآخر لا ده هيخلص شغل ولا ده هيخلص
وبس كده نكون خلصنا ووضحنا مشكلة الdeadlock و يارب تكون المشكلة وضحت في المثال اللي قولناه ولو حابب تقرأ أكتر وتبدأ تشوف حلول لمشكلة الdead lock فأنا هسيبلك شوية مصادر تحت في التعليقات تقدر تكمل منها الكلام اللي بدأناه هنا بنوسع اكتر وتبدأ تشوف حلول للمشكلة دي وبكدا تكون نهاية كلامنا عن الmulti threading ومشاكله عشان نبدأ نتكلم المرة الجايه عن الsynchronous vs asynchronous بإذن الله
اتكلمنا قبل كدا عن الthreads واي هيا الthread و بدأنا بعد كدا نتكلم عن الmulti threading وشوفنا مزاياها بعد كدا بدأنا نتكلم عن بعض العيوب و المشاكل اللي بتواجهنا في استخدام الmulti threading ووقفنا المرة اللي فاتت عن حل لمشكلة الrace condition واللي كان عن طريق استخدام الlock والنهاردة بإذن الله هنتكلم عن مشكلة جديدة بسبب الlock
- ايه ده!! إذا كان احنا عملنا الlock علشان يحللنا مشكلة يقوم هوا اللي يعملنا مشكلة!!
صدقتني بقى لما قولتلك الmulti threading مش أطيب من أستاذ بهاء ولا حاجه وان مشاكله كتير
- …!
ما علينا المهم اننا هنتكلم النهاردة عن مشكلة جديدة من مشاكل الmulti threading وهيا الdead lock
-ايه هيا الdead lock وبتحصل ليه وامتى؟
تعريف الdead lock هو :
A deadlock is created when two applications lock data that is needed by the other, resulting in a situation in which neither application can continue executing.
يعني ايه الكلام ده بقى؟؟
بص فاكر مثال المرة اللي فاتت بتاع أم محمود اللي ملناش غيرها
- اه, بس زهقت منها
خلاص عشان خاطرك هنحاول نشوف مثال تاني المرة دي بما إننا فهمنا الأساسيات المرة اللي فاتت فهنقول مثال عملي شوية في system فهنفترض ان فيه system بتاع بنك الsystem ده بيستخدم الmulti threading في شغله بس اتعلم من غلطة الحاجة أم محمود وبقى يستخدم lock عشان ميحصلش عنده مشاكل فوصل عنده عميل في الفرع الأول اسمه خالد حابب يعمل عملية تحويل لحساب شخص تاني اسمه عمر
- ايه ده مش دول ولاد الحاجه ام محمود؟
اه ربنا كرمهم من تقليب امهم وفتحوا حسابات في البنك, بس مش ده المهم دلوقتي المهم ان اللي هيحصل دلوقتي في الsystem في عملية التحويل
أول حاجة زي ما اتكلمنا المرة اللي فاتت عشان بنستخدم الmulti threading ف الsystem أول حاجه هيعملها أنه يعمل lock على حساب خالد عشان يعمل شوية عمليات وchecks يتأكد ان خالد ده مسموحله يعمل العملية دي ولا لا
-طيب بعد كدا؟
بعد كدا هيبدأ يخصم من حساب خالد وبعدها يروح يشوف عمر ويشوف هل مسموحله يتحول ليه المبلغ ده ولا لا وبعدها يضيف اللي خصمه لحساب عمر
- بس حاسب قبل ما يعمل الcheck ويضيف لحساب عمر لازم يعمل على حساب عمر lock الأول
صح فعلا كدا انت مركز معايا قبل طبعا ما يضيف على حساب عمر القيمة دي هيعمل عليه lock والعملية تتم بسهولة خالص بدون أي مشاكل والlocks دي تتشال من على عمر وخالد بعد ما العملية تخلص
- طب ما الدنيا جميلة اهي ومفيش مشاكل اهو
اصبر عليا المشاكل جاية قدام
تاني يوم خالد وصل تاني للفرع الأول عشان يعمل عملية تحويل تاني لاخوه عمر بس الصدفة ان عمر هوا كمان وصل الفرع التاني من البنك علشان هيعمل عملية تحويل لاخوه خالد وبالصدفة البحته اللي مش بتحصل غير في الأفلام الهندي عمر وخالد وصلوا في نفس الثانية ودخلوا للموظف في نفس الثانية والموظفين الاتنين في الفرع الأول والفرع التاني نفذوا عملية التحويل في نفس الثانيه من على الsystem وطبعا عشان الsystem ده multi threading فكل عملية فيهم بتحصل على thread مختلف فاللي هيبدأ يحصل:
(خالد🔓🔓) (عمر🔓🔓)
الفرع الأول: الthread الأول هيبدأ يعمل lock على حساب خالد
(خالد🔒🔒T1) (عمر🔓🔓)
الفرع التاني: الthread التاني هيبدأ يعمل lock على حساب عمر
(خالد🔒🔒T1) (عمر🔒🔒T2)
الفرع الأول: خلص check على حساب خالد وخصم منه المبلغ
(خالد🔒🔒T1) (عمر🔒🔒T2)
الفرع التاني: خلص check على حساب عمر وخصم منه المبلغ
(خالد🔒🔒T1) (عمر🔒🔒T2)
الفرع الأول: بدأ يعمل lock على حساب عمر عشان يضيف ليه المبلغ بس لقاه اساسا مشغول مع thread تاني ومعموله lock فقعد منتظر لحد ما الlock يتفك عنه
(خالد🔒🔒T1) (عمر🔒🔒T2)
الفرع الأول: بدأ يعمل lock على حساب خالد عشان يضيف ليه المبلغ بس لقاه اساسا مشغول مع thread تاني ومعموله lock فانتظر لحد ما يخلص
-طيب وبعدين؟؟
بس كدا مفيش بعدين بوست النهارده كدا خلص
ايه ده مش هتستنى لحد ما الsystem يخلص عملية التحويل
لا
-ليه
عشان مش هيخلص عملية التحويل هيفضل بالمنظر ده طول ما الsystem شغال
thread 1
مستنى
thread 2
يفك الlock
عشان يكمل شغله و thread 2 مستنى thread 1 يفك الlock عشان يكمل شغله وفي الآخر لا ده هيخلص شغل ولا ده هيخلص
وبس كده نكون خلصنا ووضحنا مشكلة الdeadlock و يارب تكون المشكلة وضحت في المثال اللي قولناه ولو حابب تقرأ أكتر وتبدأ تشوف حلول لمشكلة الdead lock فأنا هسيبلك شوية مصادر تحت في التعليقات تقدر تكمل منها الكلام اللي بدأناه هنا بنوسع اكتر وتبدأ تشوف حلول للمشكلة دي وبكدا تكون نهاية كلامنا عن الmulti threading ومشاكله عشان نبدأ نتكلم المرة الجايه عن الsynchronous vs asynchronous بإذن الله
التعليقات فبايثون
# this code made by death
الطباعه
Python ver 3
print(" ")
Python 2.7
print " "
لطباعه كود بايثون 3 بداخل بايثون 2.7
from future import print_function
من خلال مكتبه future تقدر تستخدم بعض خصائص بايثون 3 بداخل بايثون 2.7
#python
# this code made by death
الطباعه
Python ver 3
print(" ")
Python 2.7
print " "
لطباعه كود بايثون 3 بداخل بايثون 2.7
from future import print_function
من خلال مكتبه future تقدر تستخدم بعض خصائص بايثون 3 بداخل بايثون 2.7
#python
عود نفسك وانت بتتعلم اي حاجة في البرمجة انك دايما تشغل عقلك وتسأل اسئلة وجودية (من بتاعت بعد الساعة ١٢ دي) وتفكر قبل ما تتعلم الحاجة
دا هيساعدك انك افهم اكتر الحاجة اللي بتعلمها بسهولة
على سبيل المثال
قواعد
clean code, solid, design patterns
وكل الحاجات الحلوة دي
لو بصيتلها هتلاقيها حاجات منطقية وبديهية وطبيعية جدا مش اختراع من المريخ
ف مثلا قبل ما تتعلم كلين كود اعرف يعني ايه كلين كود اصلا وايه الهدف منه واكتب اي كود ييجي في دماغك وبعدها اسأل وفكر بنفسك ازاي تخلي الكود بتاعك يحقق اهداف الكلين كود
الكلين كود يعني كود سهل اقراه وافهمه واعدل فيه
طيب نبدأ ب اسهل حاجة وهي المتغيرات
لو عندي كود
let x = "mostafa"
console.log(x)
هل الكود دا كلين ؟
هل سهل تفهمه وتعرف كل جزء فيه بيعبر عن ايه ؟
الكود مفيهوش غير متغير واحد
هل المتغير دا واضح من اول نظرة ؟ لما تشوف اسمه في اي حتة
الاجابة لا لاني لما اشوف
x
في اي حتة مش هعرف هو بتاع ايه ولا جواه ايه ولازم دايما ابقى فاكر انه بيعبر عن الاسم
طب ازاي احل المشكلة دي
بالمنطق كدا ان الاسم يكون معبر عن اللي جواه
فممكن بدل ما اسميه
x
اسميه
theNameOfLoggedUser
بس الاسم دا طويل اوي وهزهق وانا بقراه فنختصره شوية مثلا نخليه
username
او
name
و كدا نكون طلعنا بشوية قواعد لتسمية المتغيرات
اسم معبر عن محتواه وصغير وسهل النطق والحفظ
مثال تاني
قواعد سوليد
الهدف منها اني اكتب كود
oop
سهل الفهم والصيانة واعادة استخدامه
ف اعملك مشروع صغير وعيد النظر فيه وفكر فيه تاني
طيب لو عندي ميثود بتجيب بيانات من سيرفر وبتعالج البيانات دي وبتحفظها في الداتابيز
هل الميثود دي سهل اني افهمها من اول نظرة ولو فيها مشكلة احدد هي فين بالظبط ؟
الاجابة لا لانها بتعمل كذا حاجة ف الاحسن اقسمها ل ٣ ميثودز كل واحدة بتعمل حاجة واحدة بس
ف كدا نكون طلعنا ب اول مبدأ من مبادئ السوليد وهو مبدأ المسئولية الواحدة
single responsibility principle
فكر في الحل قبل ما تتعلمه
لما تعمل كدا هتلاقي انك وصلت بنفسك لنسبة حلوة من الحاجة اللي عايز تتعلمها ف لما تيجي تتعلمها هتلاقيها اسهل ومحفورة جواك حتى لو نسيتها
ودا كمان هينمي عقلك اكتر وهيساعدك جدا جدا وانت شغال
وانا شايف ان دي برضو مهمة الناس اللي بتشرح انه لما ييجي يشرح حاجة يبدأ من المشكلة ويشرح ازاي يفكر ويوصل للحل
دا هيساعدك انك افهم اكتر الحاجة اللي بتعلمها بسهولة
على سبيل المثال
قواعد
clean code, solid, design patterns
وكل الحاجات الحلوة دي
لو بصيتلها هتلاقيها حاجات منطقية وبديهية وطبيعية جدا مش اختراع من المريخ
ف مثلا قبل ما تتعلم كلين كود اعرف يعني ايه كلين كود اصلا وايه الهدف منه واكتب اي كود ييجي في دماغك وبعدها اسأل وفكر بنفسك ازاي تخلي الكود بتاعك يحقق اهداف الكلين كود
الكلين كود يعني كود سهل اقراه وافهمه واعدل فيه
طيب نبدأ ب اسهل حاجة وهي المتغيرات
لو عندي كود
let x = "mostafa"
console.log(x)
هل الكود دا كلين ؟
هل سهل تفهمه وتعرف كل جزء فيه بيعبر عن ايه ؟
الكود مفيهوش غير متغير واحد
هل المتغير دا واضح من اول نظرة ؟ لما تشوف اسمه في اي حتة
الاجابة لا لاني لما اشوف
x
في اي حتة مش هعرف هو بتاع ايه ولا جواه ايه ولازم دايما ابقى فاكر انه بيعبر عن الاسم
طب ازاي احل المشكلة دي
بالمنطق كدا ان الاسم يكون معبر عن اللي جواه
فممكن بدل ما اسميه
x
اسميه
theNameOfLoggedUser
بس الاسم دا طويل اوي وهزهق وانا بقراه فنختصره شوية مثلا نخليه
username
او
name
و كدا نكون طلعنا بشوية قواعد لتسمية المتغيرات
اسم معبر عن محتواه وصغير وسهل النطق والحفظ
مثال تاني
قواعد سوليد
الهدف منها اني اكتب كود
oop
سهل الفهم والصيانة واعادة استخدامه
ف اعملك مشروع صغير وعيد النظر فيه وفكر فيه تاني
طيب لو عندي ميثود بتجيب بيانات من سيرفر وبتعالج البيانات دي وبتحفظها في الداتابيز
هل الميثود دي سهل اني افهمها من اول نظرة ولو فيها مشكلة احدد هي فين بالظبط ؟
الاجابة لا لانها بتعمل كذا حاجة ف الاحسن اقسمها ل ٣ ميثودز كل واحدة بتعمل حاجة واحدة بس
ف كدا نكون طلعنا ب اول مبدأ من مبادئ السوليد وهو مبدأ المسئولية الواحدة
single responsibility principle
فكر في الحل قبل ما تتعلمه
لما تعمل كدا هتلاقي انك وصلت بنفسك لنسبة حلوة من الحاجة اللي عايز تتعلمها ف لما تيجي تتعلمها هتلاقيها اسهل ومحفورة جواك حتى لو نسيتها
ودا كمان هينمي عقلك اكتر وهيساعدك جدا جدا وانت شغال
وانا شايف ان دي برضو مهمة الناس اللي بتشرح انه لما ييجي يشرح حاجة يبدأ من المشكلة ويشرح ازاي يفكر ويوصل للحل
Web Development Code
انزلكم مسائل JavaScript
ياريت الكل يجاوب 🙏