프리리스트는 이미 할당 된 기존 메모리를 재사용함으로써 할당 속도를 높이는 일반적인 방법입니다. 동시 할당 자의 자유 목록을 사용할 수있는 방법이 있습니까? 할당에 대한 잠금 오버 헤드가 발생하지 않습니다 (freelist의 의도 된 성능 향상을 무력화시키는)?동시 할당자가있는 프리리스트
0
A
답변
1
lock-free linked list을 사용하십시오.
0
스레드 별 자유 목록 청크가있을 수 있습니다.
기본적으로 무료 목록 (예 : 가비지 수집기)을 채우는 시스템이 있습니다. 그런 다음 각 스레드는 적은 수의 항목을 포함하는 자체의 자유 목록 청크를 가질 수 있습니다. 잠금은 새 청크를 할당하는 데 사용됩니다. 30 개의 항목이있는 청크의 경우 30 개의 할당마다 한 번만 잠글 것입니다. 반대로 스레드 별 청크가 있으면 일부 GC가 여전히 사용 가능한 항목이 있어도 공유 목록이 비어있을 수 있으므로 GC를 더 빨리 실행해야 할 수 있습니다.
관련 문제
- 1. 동시 메모리 주소에 동시 쓰기
- 2. Netty 및 NIO와의 동시 동시 HTTP
- 3. 문제 큐 동시 및 비 동시 NSOperations
- 4. 루비의 동시 동시 요청 서버가 많습니다.
- 5. 동시 사용
- 6. 동시 연결
- 7. iphone을 지원하는 동시 (동시) 네트워크 연결은 몇 개입니까?
- 8. 안드로이드에서 어떻게 비동기식으로 동시 발음 (동시 발음)을합니까?
- 9. IIS에서 동시 동시 응용 프로그램의 값을 확인하는 방법
- 10. 스레드 된 동시 작업
- 11. 동시 LinkedHashMap 구현
- 12. 병렬 및 동시 프로그래밍
- 13. 실행 여러 JDK의 동시
- 14. Apache에서 동시 연결
- 15. 자바 다운로드 동시 데이터
- 16. 자바 동시 처리 문제
- 17. 동시 데이터베이스 쿼리 투영
- 18. C++/g ++ : 동시 프로그램
- 19. 동시 비동기 콜백
- 20. System.Net.Mail.SendAsync 동시 사용?
- 21. 여러 JVM과 동시 작업
- 22. 질문의 동시 실행
- 23. 자바 동시 네트워킹 문제
- 24. 동시 수정 루비 해시
- 25. 블록 동시 액세스 ThreadPool이
- 26. PHP 동시 파일 쓰기
- 27. 동시`.animate()`와`.effect()`
- 28. 다른 스레드에있는 동시 GraphicsDevice
- 29. Silverlight의 동시 연결 수
- 30. C++ 동시 연관 컨테이너?
실제로 잠금을 사용하는 것보다 성능이 좋습니까? 잠금 해제 된 데이터 구조는 일반적으로 잠긴 변형과 거의 같은 속도를 갖지만 교착 상태가 발생할 가능성은 없습니다. –
경합이 거의 없다면 특히 lock을 사용하면 OS 호출이 발생할 경우 lock-free 구현이 lock (읽기 - 수정 - 쓰기 - 잠금 해제 대신 읽기 - 수정 - 쓰기)을 사용하여 성능이 향상되어야합니다. 무거운 경합이있는 경우, 잠금 해제 구현은 실제로 성능을 저하시킬 수 있습니다 (반복적으로 다시 시도하고 다시 시도해야하기 때문에). 그런 종류의 상황에서는 잠긴 구현이있는 여러 스레드를 사용하여 실제로 아무것도 얻을 수 없습니다. if 연결된 목록 돌연변이가 대부분의 작업이며, 대부분의 작업은 어쨌든 직렬화됩니다. – moonshadow