Systems and methods for dynamically allocating memory for thread
processing may reduce memory requirements while maintaining thread
processing parallelism. A memory pool is allocated to store data for
processing multiple threads that does not need to be large enough to
dedicate a fixed size portion of the memory pool to each thread that may
be processed in parallel. Fixed size portions of the memory pool are
dynamically allocated and deallocated to each processing thread.
Different fixed size portions may be used for different types of threads
to allow greater thread parallelism compared with a system that requires
allocating a single fixed portion of the memory pool to each thread. The
memory pool may be shared between all of the thread types or divided to
provide separate memory pools dedicated to each particular thread type.