لغة الانتقال: التحديد المتزامن للقنوات المخزنة وغير المخزنة
المهمة المطروحة هي تحقيق التحديد المتزامن على قناة إرسال مخزنة مؤقتًا وقناة إرسال مخزنة مؤقتًا. تلقي قناة غير مخزنة دون استهلاك موارد وحدة المعالجة المركزية بشكل مستمر. هذا السيناريو يعادل الحظر حتى تصبح القناة جاهزة للإرسال دون إرسال أي بيانات.
لمعالجة هذا، يمكننا استخدام عبارة تحديد مع حالة افتراضية. عندما لا تكون أي من القناتين جاهزتين، يتم تشغيل الحالة الافتراضية، مما يؤدي إلى بدء فترة سكون قصيرة. يتيح ذلك الحفاظ على الموارد مع الاستمرار في تمكين المحاولات المستمرة لإرسال واستقبال البيانات:
package main
import (
"fmt"
"time"
)
func valueToSend() int {
// Generate a value to send, calculated/acquired each attempt
return 0
}
func main() {
s := make(chanيجب توخي الحذر عند الاعتماد على طول القناة أو فحص السعة قبل إرسال البيانات أو تلقيها. يمكن أن تؤدي مثل هذه الأساليب إلى سلوك غير متوقع، حيث يمكن أن تتغير حالة القناة بين الفحص وعملية الإرسال/التلقي الفعلية.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3