기존의 전통적인 동기화 기법은, 락을 사용해서

임계영역을 만나게 되면, 공유변수를 보호하기 위하여

모든 스레드를 일시 정지 ,

임계영역을 만난 스레드 혼자 처리를 하고, 처리가 끝나면

다시 모든스레드를 깨운다.
잖아

내가 생각해본건
임계영역을 만날 , 해당 스레드 혼자 일단 정지(대기) 하는거임 
그리고, 내가 제일 먼저 왔당! 이라고 발자국을 찍어서, 접근기록을 큐에 넣어놓는거임

다른 스레드들은 여전히 돌고있고, 다른스레드들도 임계영역을 만나면 접근기록을 큐에남김
그리고 임계영역에 해당하는 명령어집단 도 함께 큐에 들어가는데

가령 A번스레드 B번스레드 C번스레드가 있고, B-A-C 순서로 공유변수에 접근했으면

제일 먼저 임계영역에 접근한 B는 큐에 아무것도 없으니 그냥 바로 임계영역이 실행되면서 자신의 접근기록을 큐에 남기고,
두번째로 접근한 A번은 B의 접근기록이 큐에 있으니, B의 임계영역을 실행한 뒤, 자신의 임계영역을 실행, 마찬가지로 큐에 접근기록 남기고
C는 B->A 임계영역을 순차적으로 실행 한 뒤에 자신의 임계영역을 실행하면...

그러니까, 기존의 스레드가 자기 혼자 독차지하려고 다른 스레드를 모두 멈춰놓았다면
내가 생각해본거는
공유변수에 접근한 스레드의 기록과 임계변수영역의 처리목록을 큐잉하고,
먼저 접근한 스레드(큐잉된)가 있으면, 그걸 순차적으로 실행한 뒤에, 자신의 것을 실행하는거
동기적으로 동작하면서, 자기 자신 스레드만 멈추고,
다른 스레드는 여전히 돌고 있는걸로 성능극대화?! 라는 생각을 해봣는데..

어떠함?