일단 Lock-Free 쓰는 이유가 기본적으로 데드락을 원천 방지해서


스레드 락으로 인한 블록킹이 발생 안해서 하는건데


꼭 이렇게 안하고, Lock Free 안하고 Spin Lock 해서 Busy-Waiting 하는 경우가 있는데


나의 경우엔 링버퍼씀.


일단 링버퍼는 Interlocked.Increment 같은 연산할때, head, tail 인덱스 관리해서 Lock-Free에 가깝긴한데, 기본적으로 ResizeBuffer부분에서 Lock 되기때문에 완전한 Lock-Free가 아님


기본적으로 완전한 Lock-Free는 CAS 써야하는데 이건 내가 이해 못해서 안씀


Lock-Free 비슷한거라서 완전 Lock-Free는 아니다. 정도의 느낌으로 이해하면될듯