Am Tuesday 03 November 2009 07:17:18 schrieb frank:
On Tuesday 03 November 2009 05:45:48 Stefan Strasser wrote:
Am Tuesday 03 November 2009 04:08:14 schrieb Diederick C. Niehorster: I actually considered that, but while recreating the functionality of Boost.Pool is pretty easy, given that Boost.Intrusive now exists, a generic pool allocation library is some effort. some things that come to mind is multiple allocation algorithms to meet different time complexity and memory overhead needs, pools that allow allocation of different-sized objects, maybe even a generic "allocation algorithm" library that is not limited to chunks of memory, but can be used for disk space and other arbitrary ranges, like allocating IDs.
I recently tried to use the std::allocator drop-in replacement from Boost.Pool in a massively multithreaded program running on a machine with a lot of cores. The result was very disappointing.
as is expected. you might want to look into using thread specific pools, that only synchronize when a new pool block is allocated.
A nice feature for Boost.Pool would be the ability to scale in multithreaded environments (like for example the tbb::scaleable_allocator from the Intel Threading Building Blocks).
if we could put together a team for Pool2 I'd certainly take part in it, but it is too much effort for one person, considering that you can write something like that for your own needs, in a non-generic way, in a few hundred lines.