има ли използваема библиотека, която прилага без заключване (която е безопасна за нишки и може да прилага спинлок или друга лека синхронизация) ObjectPool ( http://en.wikipedia.org/wiki/Object_pool_pattern ) написано на език C++ с използване на шаблон?
Какви въпроси мога да задам тук? Въпроси за програмиране, разбира се! Стига въпросът ви да е: подробен и конкретен, написан ясно и просто от интерес за други програмисти -- опитайте се да отделите малко повече време на въпроса си, за да можем наистина да отговорим на него.
- personBen Burnett  schedule03.06.2010
comment
защо не е ясно? има ли използваема библиотека, която прилага lock-free (която е безопасна за нишки и може да прилага spinlock или друга лека синхронизация) ObjectPool (en.wikipedia.org/wiki/Object_pool_pattern), написан на език C++ с помощта на шаблон?
- personuray  schedule03.06.2010
comment
Искам да кажа, че сте включили около три пъти повече информация в коментара си, отколкото във въпроса си, и бих си помислил, че трябва да е обратното.
- personBen Burnett  schedule03.06.2010
comment
*Въпросът е актуализиран, благодаря...
- personuray  schedule03.06.2010
Най-добрият ви залог би бил да разгледате Boost.Pool и напишете интерфейс за разпределение/мутекс без заключване за него.
personKornel Kisielewiczschedule03.06.2010
comment
ако използвам boost::pool и просто заменя неговия разпределител с разпределител без заключване, мисля, че това не прави пула без заключване или безопасен за нишката на събитието, тъй като boost::pool може да изпълнява е списък с използване на парче свързан списък или нещо, което не е безопасно за нишки и се нуждае от синхронизиране не в разпределителя, а в метода на borrowReusable() и returnReusable(), тогава няма да е пул без заключване, прав ли съм?
- personuray; 03.06.2010
Като се има предвид, че има опашки без заключване, бих казал, че ако пулът не съществува, със сигурност можете да създадете един (почти) пул без заключване.
В комбинация с класическия разпределител tmalloc (който може да заключи, но го избягва колкото е възможно повече), мисля, че ще се приближите до целта си.
personMatthieu M.schedule03.06.2010
comment
притеснението ми е, ако наистина е толкова лесно или почти без заключване с висока производителност, защо след тези години на многоядреност никой вече не го е внедрил?. един от моите случаи, вече поставен под въпрос тук: stackoverflow.com/questions/2953554/recycle-freed-objects . Внедрявам опашката без заключване, но искам да я оптимизирам малко, като намаля разпределението на купчина с помощта на ObjectPool. но ще има ли някаква полза от производителността, ако пулът от възли на опашка на опашка се реализира с помощта на опашка
- personuray; 03.06.2010
comment
Хм, това изглежда доста излишно :p Боя се, че тогава няма да работи.
- personMatthieu M.; 04.06.2010