Machinations: کشیدن و هل دادن منابع

هنگامی که یک استخر اجرا می شود، تلاش می کند تا منابع را از هر ورودی که به آن متصل است دریافت کند. میزان منابعی که دریافت می کند براساس نرخ هر اتصال منبع(عدد کنار خط) مشخص می شود. به همین شکل یک استخر می تواند روی حالت هُل دادن یا کشیدن منابع تنظیم شود. در حالت هل دادن، هنگامی که یک استخر اجرا می شود، منابع را از طریق اتصال های منبع خروجی ارسال می کند. در اینجا هم مانند حالت کشیدن میزان منابع ارسالی توسط استخر به نرخ تعیین شده بر روی هر اتصال بستگی دارد. یک استخر در حالت هل دادن(push mode) با علامت p همراه است. استخر هایی که فقط اتصالات خروجی دارند در حالت هل دادن در نظر گرفته می شوند، که در این وضعیت علامت p حذف می شود.

اگر یک استخر سعی در کشیدن منابع بیش از منابع موجود در انتهای ورودی داشته باشد، این حالت با یکی از حالت های زیر رو به رو می شود.

  • به صورت پیشفرض، یک گره هر میزان منابع تا سقف نرخ تعیین شده را که بتواند دریافت می کند. اگر منابع کافی در دسترس نباشند همچنان منابع موجود را منتقل می کند.
  • از سوی دیگر، یک گره می تواند به شکلی تنظیم شود که اگر منابع کافی نیستند ارسال نکند. در این حالت هنگامی که منابع کافی تا سقف نرخ تعیین شده موجود نباشد. چیزی ارسال نمی شود. این حالت all or none نام دارد. گره هایی که در این حالت هستند با علامت & نمایش داده می شود.

قوانین بالا برای حالت هل دادن منابع توسط گره ها نیز اعمال می شود. به صورت پیشفرض، یک گره تا زمانی که منابع در دسترس هستند در هر بار اجرا تا سقف نرخ تعیین شده را ارسال می کند. قرار دادن یک گره که منابع را هل می دهد در وضعیت all or none باعث می شود فقط هنگامی که منابع کافی در دسترس هستند فعال شود. در چنین موقعیتی گره ها به علامت p و & نمایش داده می شوند.


شکل پایین دو حالت را که در آن منابع مورد تقاضا کافی نیستند را به تصویر می کشد. گره A توسط کاربر فعال می شود(برای همین دایره دو خط است). این گره قصد دارد 3 واحد منابع را از گره بالا و دو واحد منابع را از گره پایین دریافت کند. استخر هایی که این گره به آن متصل است منابع کافی ندارند. هنگامی که روی گره A کلیک می شود، این گره منابعی که موجود است را دریافت می کند.


در حالت دوم، هنگامی که روی گره B کلیک شود، این گره سعی در دریافت واحد منابع با مقدار تصادفی از یک تا 6 می کند. اگر مقدار تصادفی بین اعداد چهار، پنج یا شش باشد سه واحد از منابع در دسترس دریافت می شود.