السلام عليكــم ورحمـة الله وبركاتــه
اطلعت حديثا على موضوع الأخ عيسى حول Threads in java فوددت التعقيب ولكن للأسف الموضوع أغلق.
أشكر الأخ Eisa على شرحه القيم و الواضح جدا.
أود أن أعقب فقط عن أن Concurrency programming أتت بعد
Sequenced programing أين كانت الحاجة لتنفيذ برنامج واحد بصفة تسلسلية لتعليماته ، ومع مرور الوقت وتطور التكنولوجيا ظهرت الحاجة لتنفيذ عدة برامج في آن واحد و المشكل يكمن فيما إذا كانت هذه البرامج مرتبطة فيما بينها"تستعمل متغير أومورد مشترك
هذه البرامج تدعى Concurrency programs أي dependence
ولأجل أن يكون سير هته البرامج صحيح و سليم ، هناك آليات للتزامن مثل Semaphore and Monitor..
بالنسبة للغة الجافا هي تدعم ال Monitor وذلك باستخدامها للكلمة المفتاح sunchronized في دوالها ، والتي تضمن تنفيذها من طرف ثريد واحد at time. واستخدامها للدالتين Wait and Notify لضمان هذا التزامن بين مختلف الثريدس.
توجد نماذج أساسية لل Concurrency ومنها مثلا : Reader_writer, Pruduceer-consommer, mutual exclusion,…
و التي من خلالها يمكن حل مختلف المشاكل الأخرى لأجل بناء تطبيقات Concurrency and cooperatives.
آسف عن المقدمة التي يمكن أن تكون ثقيلة نوعا ما و لنذهب للتطبيق.
أضع بين أيديكم مشكلة للحل لضمان التزامن بين الثريدس"الطلبة هنا في المثال".
-نود أن نضمن السير الحسن لدخول وخروج الطلبة من قاعة متكونة من قاعتين داخليتين A an B
كما هو موضح بالشكل :

هناك مجوعة طلبة خارجا ، على كل طالب القيام بالأشغال التاليةعلى الترتيب:
-البقاء خارجا لمدة معينة.
-الدخول للقاعة A"الباب 1"
-البقاء في القاعة A مدة معينة.
-الإنتقال من A للقاعة B"الباب 2"
-البقاء في القاعة B لمدة معينة.
-الإنتقال من B للقاعة A"الباب 3"
-البقاء في القاعة A لمدة معينة.
-الخروج خارجا "الباب 4"
ولكن هناك شروط توضع في الحساب وهي:
الغرفة A لا تتجاوز 10 طلبة ، والغرفة B لا تتجاوز 05 طلبة.
أضع بين أيديكم هذا المشكل للمناقشة فهل من مجيب أو من معقب؟
