[cs631apue] Data structure implementations in <sys/queue.h>

Jan Schaumann jschauma at stevens.edu
Tue Sep 4 22:52:19 EDT 2018


Benjamin A Iofel <biofel at stevens.edu> wrote:
> On Mon, Sep 3, 2018 at 10:42 PM, Jan Schaumann <jschauma at stevens.edu<mailto:jschauma at stevens.edu>> wrote:

>> By not including a pointer to the object, and instead requiring the
>> object to contain the list head struct, you also yield branchless
>> insertion/deletion in the list: any object can dereference the next
>> item in the list without having to check the reference on the object.
> 
> How is it branchless? You still have to check whether the next pointer
> is null.

I meant the implementation doesn't need to special case manipulation of
the head (although the man page notes that using the head-specific macro
is going to be more efficient).  However, that may really make more of a
difference in the context of doubly linked lists, as explained here:
https://0xefbeadde.wordpress.com/tag/sysqueue-h/

I'd guess that keeping the slist and list implementations close to each
other was another design decision made in this interface.

-Jan


More information about the cs631apue mailing list