Thanks Steve, for considering my issues.
Sorry to bother you, I have a few more questions on this topic:4) what's the use of ordered_alloc/ordered_free? I made a few tests and they are indeed a bit slower than regular alloc/free, without any apparent advantage. Am I missing something?
Keeping the free list ordered allows algorithms that traverse the free list along with the memory owned by pool to work correctly/more efficiently: 1) array allocations will be more efficient (pool_allocator keeps its free list ordered, whereas fast_pool_allocator does not) 2) release_memory() will work correctly 3) object_pool uses the ordered property to efficiently implement the automatic destructor calls for allocated objects
1) from what I understand, the "ordered" property depends on the fact that allocation and deallocation calls are correctly paired, in the sense that if I always call free() in the opposite order of the respective malloc() calls the pool is still considered to be ordered. Is this right? In this special case, would I get a benefit by calling ordered_malloc()/ordered_free()?
2) can ordered_malloc() be called on a non-ordered pool? Does the call make the pool ordered? In this case, is the complexity still O(1)?
3) can ordered_free() be called on a non-ordered pool? Does the call make the pool ordered?
4) ordered_malloc() is described as "merges the free list to preserve order", does this mean that unused, but potentially usable, chunks are removed from the free list?
I think the "order" property is very useful and powerful, but it's not terribly clear from the docs how it can be exploited to full potential. The descriptions of the methods are missing post-conditions that are, in my opinion, as important as pre-conditions. Change in the "ordered" state of the pool could be added more explicitly there. Moreover, if a function can be called on both ordered and un-ordered pools, it would be interesting to state explicitly if there's a difference in behaviour and/or complexity.
Thanks for your patience,
Alberto Barbati
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost