SPSC Queue 만들기

💡 SPSC란? Single-Producer / Single-Consumer 의 약자로 생산자와 소비자가 1:1인 관계를 뜻합니다. 리눅스에서 소켓을 다루다가 스레드간 데이터 전달이 필요해서 알아보니 SPSC Queue가 있다는것을 알게 되었습니다. 제 경우는 클라이언트의 연결을 담당하는는스레드에서 데이터 수신을 담당하는 스레드로 소켓(fd)을 전달해야 했는데 공용 컨테이너와 뮤텍스를 사용하면 스레드가 늘어나면 늘어날수록 오버헤드가 늘 것 같았습니다. 그래서 연결을 담당하는 스레드와 데이터를 수신하는 스레드의 생산-소비가 1:1인 관계에서 뮤텍스 없이 Lock-free 하게 구현해 보려고 합니다. 👍 🚀 구현 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 // spsc_queue....

2026년 10월 05일 · 4 min · 665 words · JongBin