|
يُعد تحديد المعدل آلية مهمة للتحكم في استخدام الموارد والحفاظ على جودة الخدمة. تدعم Go تحديد المعدل بأناقة باستخدام روتينات Go والقنوات والمؤقتات الدورية. |
|
|
|
|
|
|
|
|
سنتعرف أولًا على تحديد المعدل الأساسي. لنفترض أننا نريد تقييد معالجتنا للطلبات الواردة. سنخدم هذه الطلبات من قناة تحمل الاسم نفسه. |
|
|
ستستقبل القناة |
|
|
بحجب التنفيذ عند الاستقبال من القناة |
|
|
قد نرغب في السماح بدفعات قصيرة من الطلبات ضمن آلية تحديد
المعدل، مع الحفاظ على المعدل الإجمالي. يمكننا تحقيق ذلك
بتخزين قناة تحديد المعدل مؤقتًا. ستسمح القناة
|
|
|
املأ القناة لتمثيل الدفعات المسموح بها. |
|
|
سنحاول كل 200 مللي ثانية إضافة قيمة جديدة إلى
|
|
|
حاكِ الآن 5 طلبات واردة أخرى. ستستفيد الطلبات الثلاثة
الأولى من قدرة |
|
|
عند تشغيل برنامجنا، نرى معالجة الدفعة الأولى من الطلبات بمعدل طلب واحد كل نحو 200 مللي ثانية كما أردنا. |
|
|
في الدفعة الثانية من الطلبات، نخدم الطلبات الثلاثة الأولى فورًا لأن تحديد المعدل يسمح بالدفعات، ثم نخدم الطلبين المتبقيين بفاصل يبلغ نحو 200 مللي ثانية لكل منهما. |
|
المثال التالي: العدادات الذرية.