여러 스레드에서 Bhem GC를 독립적으로 실행
저는 러스트를 위해 hm GC에 바인딩을 작성하는 실험을 하고 있습니다.
일부 배경:러스트는 동시성이 높은 언어로 설계되었으며, 이 설계의 결과는 GC 포인터를 할당된 스레드 내로 정적으로 제한할 수 있는 기능을 가지고 있습니다(즉, 스레드 x에 할당된 GC 포인터는 다른 스레드에 의해 활성 상태로 유지되거나 전혀 참조될 수 없습니다).
따라서 저는 hm이 성능을 최대한 활용하도록 유도하고 싶습니다.
- 여러 스레드에서 할당하고 수집할 수 있도록 스레드 세이프
- 가능한 한 적게 수집(즉, 현재 스레드만)을 중지합니다. 다른 스레드는 자신의 외부에 있는 GC 포인터와 관련된 어떤 것도 간섭할 수 없기 때문에 계속 실행할 수 있습니다.
- 가급적이면 서로 다른 스레드의 GC "인스턴스" 간에 동기화되지 않고 전적으로 로컬 스레드입니다.
1은 쉽지만, 2와 3을 위한 시설을 찾을 수 없습니다.가장 중요한 부분은 1과 2입니다. 왜냐하면 다른 스레드가 수행하는 작업과 관계없이 백그라운드에서 스레드를 실행할 수 있기 때문입니다(모두 할당하고 기가바이트의 메모리를 가비지 수집하더라도).
(저는 &에 대해 알고 있지만, 그것이 3을 완전히 만족시키는 것은 아닙니다. 단지 더 효율적으로 만들 뿐입니다. 하지만 스레드 간에 로컬로 할당된 포인터를 전송하는 것은 여전히 유효하지만, 저는 그 보증이 필요하지 않습니다.)
나는 hm과 이것을 어떻게 해야 할지에 대한 답을 가지고 있지 않습니다.그러나 여기에는 스레드당 완전히 독립적인 GC 컨텍스트를 가질 수 있을 정도로 충분한 제어와 캡슐화를 가진 것으로 보이는 두 개의 GC가 있습니다.
Facility 3은 수집기의 각 글로벌 변수를 스레드 로컬 변수로 선언하여 Beohm GC 포크로 구현되는 것 같습니다. - https://github.com/Samsung/gcutil/commit/0cc277fb0cef82d515cc4ff4a439e50568474e16
언급URL : https://stackoverflow.com/questions/20921988/running-boehm-gc-in-multiple-threads-independently
'codememo' 카테고리의 다른 글
| Google 지도 Android API v2 - Interactive InfoWindow(원래 Android Google 지도와 동일) (0) | 2023.08.06 |
|---|---|
| AJAX Post를 통해 파일 판독기 이진 데이터로 파일 입력 게시 (0) | 2023.08.06 |
| Android Studio 내의 LogCat 창 복원 (0) | 2023.08.01 |
| IDENTITY_ 설정INSERT ON이 작동하지 않습니다. (0) | 2023.08.01 |
| 원산지 'http://localhost:4200'이(가) Angular7의 CORS 정책에 의해 차단되었습니다. (0) | 2023.08.01 |