كيف يمكنني تنفيذ غلاف قائمة آمن لمؤشر الترابط في دلفي؟

StackOverflow https://stackoverflow.com/questions/302583

سؤال

لدي غلاف قائمة يحتفظ بقائمة Tstringlists و TClassList

أحتاج إلى أن يكون هذا مؤشر ترابط آمنًا، مثل:

  • غير مسموح بالكتابة المتزامنة (يجب إدخال حالة انتظار من نوع ما)
  • القراءة أثناء الكتابة (أو العكس) غير مسموح بها (يجب إدخال حالة انتظار من نوع ما)
  • القراءات المتزامنة نكون مسموح

أي أفكار حول كيف يمكنني القيام بذلك؟حدسي يخبرني أن الأمر يحتاج إلى أكثر من مجرد قسم حرج، ربما إشارة أو "عداد استخدام"، ربما واحدًا من هؤلاء في اِقتِران مع CS.

لست متأكدًا تمامًا من أين أبدأ - أي شيء بدءًا من النهج الشامل باللغة الإنجليزية وحتى الكود الزائف وحتى تنفيذ دلفي أو الارتباط الخارجي سيكون موضع تقدير كبير.

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

المحلول

يجب عليك إلقاء نظرة على فئة TMultiReadExclusiveWriteSynchronizer المعلنة في sysutils.pas...

نصائح أخرى

إلقاء نظرة على هذا البرنامج التعليمي.خيوط طريقة دلفي

انظر إلى الفصل 11، لكنه كله أشياء جيدة.

يجب عليك حقًا إلقاء نظرة على TThreadList.

الطرق .إضافة، .إزالة، .مسح تقفل القائمة تلقائيًا نيابةً عنك.إذا لزم الأمر، يمكنك أيضًا القفل/فتح القفل حسب الحاجة:

x.LockList; 
try 
  //do whatever
finally  
  x.Unlocklist; 
end;

تعد TMultiReadExclusiveWriteSynchronizer فكرة رائعة ولكني لا أعرف ما إذا كانوا قد قاموا بتسوية جميع الأخطاء أم لا.لقد كانت دائمًا تواجه مشكلات تحت الحمل.

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