سؤال

أنا لست مبتدئًا في لغة C# ولكني أحتاج حقًا إلى زيادة فهمي، لذلك اخترت مشكلة الجمود الكلاسيكية للبرمجة للمساعدة في تعليم نفسي بعض المفاهيم الأكثر تقدمًا في لغة C#.ال مشكلة فلاسفة الطعام تبدو فكرة جيدة، ولكني بحاجة إلى القليل من المساعدة للبدء.أعلم أنني بحاجة إلى التعامل مع "رواد المطعم" كأشياء، ولكن لمحاكاة التأخير العشوائي بين تناول الطعام، هل يجب أن أنظر إلى الترابط مع كل زبون في موضوع منفصل؟هل أحتاج إلى نوع من "السيد" لمراقبة جميع الإجراءات؟نرحب بأي نصيحة عامة حول مفهوم التصميم، لكني أرغب في القيام بالبرمجة الناخر كتمرين.شكرًا!

هل كانت مفيدة؟

المحلول

أعتقد أن أفضل طريقة لمحاكاة ذلك ستكون Fork فئة مع طريقة مثل use() الذي يحمل الشوكة (bool available = false) و أ release() الذي يطلقها.

أ Philosopher فئة مع getFork(Fork) و releaseFork(Fork) التي تعمل على الاحتفاظ/تحرير الكائن Fork (يبدو لي أن الموقت سيكون جيدًا بطريقة ما useFork() حتى تتمكن حقًا من إدراك المأزق.

وللأخير أ DinningTable (أو أي اسم آخر) تقوم بإنشاء المثيلات، وتقوم بالسجل.إذا كنت تخطط لاستخدام سلاسل الرسائل، فإليك المكان الذي يجب أن تقوم فيه بتنفيذ خيط لكل منها Philosopher متفقة ل Fork.

كاقتراح، يمكنك تنفيذ أ Plate الطبقة، وعقد كمية من السباغيتي التي Philosopher.useFork() طريقة أقل خلال الإطار الزمني.بهذه الطريقة يمكنك أن ترى أي Philosopher ينتهي أولا.

سأترك لك التنفيذ بالطبع، نظرًا لأن هدفك هو تعلم C# ...من تجربتي، من الأفضل أن تتعلم القيام بشيء ملموس مثل هذه الفصول؛) بالإضافة إلى ذلك، يمكنك العثور على الكثير من التطبيقات على Google إذا كنت تريد الغش ...

أدعوكم لمشاركة الكود بعده .إنه مرجع دراسة عظيم.

آمل أن يساعدك هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top