Диана обнови решението на 26.12.2015 14:33 (преди над 2 години)
Весела Коледа :)
Дефинирането на всички методи върху MyRequester, а не *MyRequester определено прави Stop и AddCache леко бъгави.
Имаш известно количество race-condition-и с достъпи до мапове.
Цялата ти имплементация на Cache-а изглежда странно, currentCacheSize не е ли len(Cache) винаги? Какво се случва ако добавим нова стойност когато Cache-a e пълен?
Може би не е лоша да е в отделен тип?
Също така (нещо което явно не съм написал и ще видя дали мога да оправя в тестовете а не във условието) AddRequest е мислена асинхронно. Тоест:
r.AddRequest(fr) // не блокира докато се изпълни
r.AddRequest(fr2) // не блокира докато се изпълни
r.AddRequest(fr3) // не блокира докато се изпълни
// тук fr.Run може още да не е ръннато, а само да е добавена.
Ще се опитам да го оправя в тестовете а не в условието с цел хората които не са го разбрали така да не са прецакани :). Ако не успея не е лошо да го знаеш :).
Весели празници и приятно кодене :).
Закрепих положението с тестовете
Виж и примера във форума относно Stop