"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا يتم تقييم `input.Text()` في Goroutine الرئيسي عند استخدام عبارات `go`؟

لماذا يتم تقييم `input.Text()` في Goroutine الرئيسي عند استخدام عبارات `go`؟

تم النشر بتاريخ 2024-11-20
تصفح:518

Why is `input.Text()` Evaluated in the Main Goroutine When Using `go` Statements?

لماذا يتم تقييم input.Text () في Goroutine الرئيسي

في الفصل 8 من لغة البرمجة Go ، العبارة التالية هي تم إجراؤه حول خادم صدى التزامن:

يتم تقييم الوسائط الخاصة بالوظيفة التي بدأت بواسطة go عند تنفيذ عبارة go نفسها؛ وبالتالي يتم تقييم input.Text() في goroutine الرئيسي.

يعني هذا البيان أنه عند تنفيذ عبارة go، يتم تقييم وظيفة input.Text() على الفور، ويتم تمرير نتيجتها إلى go echo ()جوروتين. وهذا على النقيض من استدعاء الدالة العادية، حيث يتم تقييم وسيطات الدالة عند استدعاء الدالة، ويتم تمرير النتائج إلى الدالة المستدعىة.

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

من خلال تقييم الوسائط إلى الوظيفة التي بدأت بواسطة go عند تنفيذ عبارة go نفسها، لا يتعين على goroutine الرئيسي انتظار الوظيفة لإكمال. وهذا يسمح ببدء تشغيل goroutines بشكل متزامن، وهو السلوك المطلوب.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3