The multithreaded treatment in the article is naive: grab a lock, do the operation, release the lock. You won't get much concurrency that way in mutlithreaded applications with many concurrent memory operations. A prior research project of mine was a lock-free memory allocator: http://www.cs.vt.edu/~scschnei/streamflow
That link has source code and a published paper.
Research that is not my own: TCMalloc, which is a part of Google's perftools library, is an excellent multithreaded allocator. Despite using locks, it was actually the best competitor in terms of speed. TCMalloc description: http://goog-perftools.sourceforge.net/doc/tcmalloc.html
The Hoard memory allocator was one of the first in the literature to address the mutlithreaded case: http://www.hoard.org/
Writing your own allocator is a great exercise; I've recommend it as a means to learn systems programming in C. But if implementing your own is often not worth the effort in a real application. If memory allocation is an issue in your application, there's probably an existing allocator that solves the problem better than you can.
Writing your own allocator is a great exercise; I've recommend it as a means to learn systems programming in C. But if implementing your own is often not worth the effort in a real application. If memory allocation is an issue in your application, there's probably an existing allocator that solves the problem better than you can.
The multithreaded treatment in the article is naive: grab a lock, do the operation, release the lock. You won't get much concurrency that way in mutlithreaded applications with many concurrent memory operations. A prior research project of mine was a lock-free memory allocator: http://www.cs.vt.edu/~scschnei/streamflow
That link has source code and a published paper.
Research that is not my own: TCMalloc, which is a part of Google's perftools library, is an excellent multithreaded allocator. Despite using locks, it was actually the best competitor in terms of speed. TCMalloc description: http://goog-perftools.sourceforge.net/doc/tcmalloc.html
The Hoard memory allocator was one of the first in the literature to address the mutlithreaded case: http://www.hoard.org/
Writing your own allocator is a great exercise; I've recommend it as a means to learn systems programming in C. But if implementing your own is often not worth the effort in a real application. If memory allocation is an issue in your application, there's probably an existing allocator that solves the problem better than you can.