ما يعادل قناة Go في Java: مضاعفة بيانات المصدر
للتعامل مع الموقف الذي تتطلب فيه قوائم انتظار الحظر المتعددة المراقبة ولكن دون إنشاء سلاسل رسائل متعددة للقارئ، تعتبر الآلية المشابهة لقناة Go واختيارها ذات قيمة. في Java، توفر مكتبة JCSP معادلًا وظيفيًا.
بديل JCSP: A Go Select Counterpart
بديل JCSP يعادل بيان Go المحدد. يسمح للخيط المستهلك بتشغيل قنوات إدخال متعددة دون الحاجة إلى استطلاعها. وهذا يضمن تعدد الإرسال الفعال للبيانات المصدر، وتجنب الحلقات غير الضرورية حتى عندما لا تحتوي بعض قوائم الانتظار على بيانات.
تنفيذ JCSP
مثال على استخدام بديل JCSP لتعدد الإرسال العادل للمدخلات القنوات مذكورة أدناه:import org.jcsp.lang.*; الطبقة العامة FairPlex تنفذ CSProcess { AltingChannelInput[] in النهائي الخاص؛ إخراج القناة النهائية الخاصة؛ public FairPlex (الدخل النهائي لـ AltingChannelInput[]، الإخراج النهائي للقناة) { this.in = in; this.out = out; } تشغيل الفراغ العام () { البديل النهائي البديل = البديل الجديد (في)؛ بينما (صحيح) { مؤشر int النهائي = alt.fairSelect ()؛ out.write (in[index].read ()); } }import org.jcsp.lang.*; public class FairPlex implements CSProcess { private final AltingChannelInput[] in; private final ChannelOutput out; public FairPlex (final AltingChannelInput[] in, final ChannelOutput out) { this.in = in; this.out = out; } public void run () { final Alternative alt = new Alternative (in); while (true) { final int index = alt.fairSelect (); out.write (in[index].read ()); } } }
تجنب حالة الجمود على غرار Go، يجب تصميم برامج Java التي تستخدم القنوات بعناية لتجنب حالة الجمود. يتحقق التحليل الرسمي لمكتبة JCSP من صحة قناتها وتنفيذها البديل، مما يضمن الموثوقية والتحرر من الجمود.
ملاحظة
أحدث إصدار ثابت من JCSP هو الإصدار 1.1-rc5، ليست النسخة المذكورة على الموقع.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3