2016-08-04 23 views
0

私はllist.hで定義されているように、Linuxカーネルのロックなしリストを使用しています。 llist_addがリストに追加されますが、先頭に新しいノードが追加されます。一定時間内にリストの末尾に追加するにはどうすればよいですか?ロックレスリストの末尾に追加

答えて

2

リストの末尾に一定時間で追加するにはどうすればよいですか?

できません。

llistのロックレスプロパティは、最初の要素を削除してすべての要素を削除するだけで最初の部分に追加されます。そして、この縮小でさえ、ロックレスにするためには十分ではありません。常にです。ヘッダーの冒頭の説明を参照してください。inclide/linux/llist.h

実際には、一部のオブジェクトのロックレスプロパティはであり、めったに必要ありません。です。ほとんどの場合、スピンロックの使用は容認されます。あなたの場合、lockfree llistの代わりに、スピンロックで保護されたダブルリンクリストlist_headを使用することができます。二重リンクリストは、最後の要素へのポインタを格納し、後の追加をサポートします(関数list_add_tail)。

+0

私たちは現在、 '' 'list_head'''でスピンロックを使用していますが、ロックを除去/削減する方法を探していました。 – user2233706

+0

おそらくRCUが助けることができますか? – 0andriy

関連する問題