투명한 오버레이에서 데이터 표현을 효율적으로 렌더링하는 방법을 만드는 데 문제가 있습니다. 모든 것이 효과적이지만 실용적이지는 않습니다.채우기/렌더링 스레드를 효율적으로 설정
현재 엔티티의 링크 된 목록을 반복하고 있습니다. 끊임없이 업데이트되기 때문에 명확한 끝은 없지만 20k에서 100k 개의 고유 한 개체가 포함되어 있습니다. 내 조건과 일치하는 엔티티를 std :: vector에 추가합니다. 현재 끝점 (마지막 링크가 처음으로 되돌아가는 지점)으로 간주되면 TryEnterCriticalSection을 사용하고 내부에서는 렌더링 스레드에서 사용할 벡터 사본을 만듭니다. 그런 다음 벡터를 지 웁니다.
내 렌더링 스레드에서 다시 TryEnterCriticalSection을 실행하고 벡터 복사본의 엔티티를 렌더링합니다. 완료되면 나는 그것을두고 시작 온통.
내 문제는 내 오버레이가 자주 깜박이며 부드럽게 추적하지 않는다는 것입니다.
이것은 내가 뭘하려고하는지 개념적으로 끔찍한 방법입니까?
에 오신 것을 환영합니다. [The Tour] (http://stackoverflow.com/tour)를 읽으신 후 [Help Center] (http://stackoverflow.com/help/asking)의 자료를 참조하십시오. 여기에 물어보십시오. –
만약 당신의 문제를 해결할 수 있을지 모르겠지만, 당신은 명확하게 사본을하기보다는 두 벡터에서 std :: swap()을 수행하여 크리티컬 섹션에서 보내는 시간을 크게 줄일 수있다. (std :: swap()은 단순히 벡터의 모든 데이터의 O (N) 복사본을 수행하는 대신 두 개의 내부 포인터를 스왑합니다) –