من نموذج التزامن GO ، مما يتيح التواصل الفعال والمزامنة بين goroutines. ومع ذلك ، بناءً على حجم المخزن المؤقت المحدد أثناء إنشاء القناة ، يمكن أن يختلف سلوكهم بشكل كبير. اصنع (تشان بول) ، بحجم المخزن المؤقت 0. وهذا يعني أنه لا يمكن أن يحمل أي قيم في أي وقت معين. نتيجةً لذلك ، ستحظر محاولة القراءة أو الكتابة إلى قناة غير مرجحة حتى يتوفر goroutine آخر لإكمال الاتصال.
] القنوات المخزنة ، التي تم إنشاؤها باستخدام Make (Chan Bool ، 1) ، لها حجم مخزن مؤقت غير صفري. يتيح هذا المخزن المؤقت Goroutines إرسال أو استلام القيم دون الحاجة إلى انتظار أن يكون Goroutine آخر متاحًا. يعمل المخزن المؤقت كتخزين مؤقت للقيم ، مما يتيح التواصل غير المتزامن. = اصنع (تشان بول) لأني: = 0 ؛ أنا
في هذا المثال ، chanfoo هي قناة غير مرغوب فيها. عند تشغيل البرنامج ، يحاول goroutine باستمرار القراءة أو الكتابة إلى القناة ، ولكن لا يزال محظورًا لأنه لا يوجد goroutine للتواصل معه. نتيجة لذلك ، يطبع البرنامج "لا" لكل تكرار. &&&] chanfoo: = make (Chan Bool ، 1) لأني: = 0 ؛ أنا عن طريق إضافة حجم مخزن مؤقت من 1 إلى chanfoo ، نمكّن التواصل غير المتزامن. يطبع البرنامج الآن رسائل "قراءة" و "كتابة" بالتناوب ، مما يوضح قدرة المخزن المؤقت على تخزين القيم حتى يصبح goroutine آخر جاهزًا للقراءة أو الكتابة. يعد فهم الفرق بين القنوات غير المحدودة والمخزنة أمرًا بالغ الأهمية لبرمجة التزامن الفعالة في GO. توفر القنوات غير المقلدة المزامنة ، بينما تسمح القنوات المخزنة بالاتصال غير المتزامن. يتيح اختيار دقيق لحجم المخزن المؤقت الأداء الأمثل ويتجنب الحظر المحتمل أو الجمود.تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3