Methods, apparatus and computer program products for removal of elements
from a linked list while other elements of the linked list are allowed to
be accessed during the removal operation. In one embodiment, the method,
apparatus and computer program product include identifying an add/remove
area of a linked list and a static area of the linked list. Elements may
only be added or removed from the linked list in the add/remove area or
by a garbage collector that performs garbage collection only on elements
in the static area of the linked list. The garbage collector identifies
an element after the last element in the add/remove area and performs
garbage collection beginning with that element and moving through the
static area. In an alternative embodiment, a "next element" pointer in a
previous list element is set to point to the element being deleted's
"next element" pointer. Any global references to the element being
deleted must be modified. A message may then be issued to the processors
of a multiprocessor system at a same interrupt priority as a reading
process priority. Once the processors respond to the message, garbage
collection may be performed on the element to be deleted.