c-为什么Linux内核无锁列表有头结构和节点结构



我正在努力理解Linux内核中的无锁列表。这是在llist.h中定义的。为什么他们有两个结构来定义列表:

struct llist_head {
    struct llist_node *first;
};
struct llist_node {
    struct llist_node *next;
};

为什么不让一个结构有一个指向下一个节点的指针呢?它类似于内核中的双链表实现。

为什么它们有两个结构来定义列表?

因为有可能不同的事物(相应的头和节点)使用的不同结构(类型)。Linux内核倾向于遵循与通常编程相同的约定。

在双链表的情况下,头和节点都被强制具有相同的类型:根据设计,struct list_headnextprev字段可以指向节点或头。单一类型对他们来说不是优势,但是必要的

相关内容

  • 没有找到相关文章

最新更新