An efficient memory system to implement a multi-list, multi-priority task management
scheme. In one embodiment, a single list which is dynamically partitioned among
multiple priority levels and effectively implements multiple priority lists. This
dynamic re-allocation of memory space available to each priority level is handled
using a single write pointer and multiple read pointers. There are as many read
pointers as there are desired priority levels. One application is scheduling tasks
so that all pending tasks are performed at least n-1 times before any pending task
is performed for the nth time. An example of a task that may be scheduled is the
retransmission of data in a communication system.