Abstract
Multi-thread programming is essential in high performance game programming. But, the widely used C++11 shared_ptr and weak_ptr have malfunction and performance problems in multi-thread environments. In this paper, we propose Lock-Free shared_ptr and weak_ptr, which have higher performance than current error preventing methods. These use a non-blocking algorithm to prevent data race in multi-thread environments. As a result of experimenting in an 8 thread environment, performance has improved up to 7424% in a situation where competition between threads is low, and 3767% in high competition.
고성능이 요구되는 게임 프로그래밍에서 멀티스레드 프로그래밍은 필수이다. 하지만 널리 사용되는 C++11의 shared_ptr와 weak_ptr는 멀티스레드 환경에서 오작동 및 성능 문제를 가지고 있다. 본 논문에서는 기존의 오작동 방지 방법보다 높은 성능을 가지는 Lock-Free shared_ptr와 weak_ptr를 제안한다. 제안하는 두 객체는 논블로킹 알고리즘을 이용하여 멀티스레드에서의 데이터 레이스를 방지하였으며, 8스레드 환경에서 실험한 결과 스레드 사이의 경쟁이 낮은 상황에서 기존의 방법보다 최대 7424% 향상되었고, 경쟁이 높은 상황에서 최대 3767% 향상된 성능을 보여준다.