私はLinuxカーネルのロックレスリストを理解しようとしています。これはllist.hで定義されています。次のノードへのポインタを持っているただ一つの構造体を持っていないのはなぜなぜLinuxカーネルのロックレスリストにヘッド構造とノード構造があるのですか?
struct llist_head {
struct llist_node *first;
};
struct llist_node {
struct llist_node *next;
};
:なぜ彼らはリストを定義するために、2の構造体を持っているのですか?これは、カーネル内の二重リンクリストの実装に似ています。
リストが空であるとします。 ... – fukanchik
カーネルの二重リンクリストの実装(ロックレスではない)は、二つの構造体を持たずに空のリストを扱います。 – user2233706
フィールド名の名前が異なることを確認してください。最初の要素を 'first'、' next'ではなく最初の要素を呼びたいと思ってください。これは、識別子が_other_文脈では有効でないため、**コピー&ペースト**プログラミングからのいくつかのエラーを防ぎます。 –