난 llist.h
에 정의 된대로 리눅스 커널의 자물쇠가없는 목록을 사용하고 있습니다. llist_add
이 목록에 추가되지만 머리글 바로 다음에 새 노드가 추가됩니다. 일정 시간에 목록의 꼬리에 어떻게 추가 할 수 있습니까?자물쇠가없는 목록의 꼬리에 추가
0
A
답변
2
어떻게하면 일정 시간 내에 목록의 꼬리에 추가 할 수 있습니까?
수 없습니다.
llist
의 잠금없는 속성은 감소 된 기능성으로 인해 발생합니다. 첫 번째 요소를 제거하고 모든 요소를 제거하는 것만 시작 부분에 추가됩니다. 그리고이 감소조차도 잠금 장치가 없기에 충분하지 않습니다. 항상입니다. 머리말의 설명 부분을 참조하십시오. inclide/linux/llist.h.
실제로 일부 개체의 잠금없는 속성은 이며 거의 요구 사항은입니다. 대부분의 경우 스핀 록 사용이 허용됩니다. 귀하의 경우, lockfree llist
대신에 스핀 록으로 보호되는 이중 연결리스트 list_head
을 사용할 수 있습니다. 이중 연결 목록은 마지막 요소에 대한 포인터를 저장하고 그 뒤에 추가 기능을 지원합니다 (함수 list_add_tail
).
우리는 현재'''list_head'''와 함께 스핀 록을 사용하고 있지만 잠금을 제거/축소 할 방법을 찾고있었습니다. – user2233706
아마도 RCU가 도움이 될까요? – 0andriy