هل توجد قائمة انتظار Free-Free "متعددة المنتجين - المستهلك واحد" ل Delphi؟

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

سؤال

لقد وجدت العديد من التطبيقات للمستهلكين الفرديين الفرديين، ولكن لا شيء للمستهلكين الفرديين من المنتجين المتعددين.

هل توجد قائمة انتظار خالية من القفل ل "المنتجين المتعددين - المستهلك واحد" ل Delphi؟

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

المحلول

قائمة انتظار القفل من OmnithreadLibrary. يدعم المنتجين المتعددين. يمكنك استخدامه بشكل منفصل من مكتبة الخيوط (أي يمكنك استخدام وحدة Otlcontainers في أي إطار آخر).

كما أشار Daniele أدناه، هناك طايران في Omnithreadlibrary. يدعم الواحد في Otlcontainers المنتجين المتعددين والمستهلكين المتعددين أثناء الإصدار "الأكثر ذكاء" في Otlcomm (وهو مجرد غلاف للإصدار البسيط) هو فقط منتج / مستهلك واحد فقط.

لا تزال الوثائق مشكلة كبيرة في مشروع OmnithreadLibrary :(. يمكن العثور على بعض المعلومات الموجودة على قائمة الانتظار هنا .

نصائح أخرى

قد يكون ذلك مفيدا: وظائف الشريحة المتشابكة.

http://svn.berlios.de/svnroot/repos/dzchart/uturities/dzlib/trunk/lockfree/

baniele teti:

يجب أن ينتظر القارئ لجميع الكتاب الذين لا يزالون لديهم حق الوصول إلى عمر او قديم قائمة الانتظار للخروج من طريقة Enquue. نظرا لأن أول شيء يقوم القارئ به في طريقة Dequeue هو توفير قائمة انتظار جديدة للكتاب الجديد الذين يدخلون Encueue، فلا ينبغي أن يستغرق وقتا طويلا لجميع الكتاب الذين لديهم مرجعين إلى قائمة الانتظار القديمة للخروج من Encueue. لكنك على حق: إنه قفل مجاني فقط للكتاب ولكن ربما لا يزال يتطلب موضوع القارئ لانتظار بعض الكتاب للخروج من Enquue.

للحصول على قائمة انتظار متعددة الاستخدامات / مفردة للمستهلكين / FIFO، يمكنك بسهولة إنشاء قفل واحد باستخدام SLIST أو مكدس Lifo Free Tapivial. ما تفعله هو مكدس "خاص" ثان للمستهلك (والذي يمكن أيضا القيام به كقصف للبساطة أو أي نموذج مكدس آخر تختاره). المستهلك ينبثق العناصر قبالة المكدس الخاص. كلما سهبل Lifo الخاص، فإنك تقوم بتدفق بدلا من الانطلاق من الشريعة المتزامنة المشتركة (الاستيلاء على السلسلة القصوى بأكملها) ثم امشي القائمة بالمستقل عناصر دفع بالترتيب على المكدس الخاص.

التي تعمل من أجل المنتج الفردي / المستهلك واحد وغير مستخدمي متعدد الاستخدامات.

ومع ذلك، فإنه لا يعمل في حالات متعددة المنتجة / متعددة المستهلكين.

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