처음 생각했던 work queue.

의문점 :
그럼 만약, 작업1 이 10s 작업2 가 10ms가 걸린다면,
Asynchronous nature of the work queue 로 인해
작업2가 먼저 끝나지 않을까?
Queue 자체는 순서대로 들어오지만 FIFO Queue가 아닌 Work Queue 라서 나가는 순서는 먼저 끝나는 작업2가 아닐까?

해결:

의문점2: 그럼 설정없는 work queue는 event loop이랑 비슷한건가?
해결: 조사중...
의문점3:
Okay 그러면, 순서가 정해졌는데 왜 여러 요청이 올 경우, 왜 값이 다르게 나오는 것일까?

8개를 update 하기 전에 조회가 빠르게 실행되기 때문에 작업 2 , 3은 10개를 반환하게 된다. job.finished는 나가는 순서를 보장해주는 것. async 워커들에게 process 순서까지 명령하는 것이 아니다.
해결:
동시성 제어를 검색해보면 LOCK을 찾을 수 있다.
Spin Lock
Redisson Lock - 다쓰면 돌려놓기? -아직 공부중....
다른 방식이지만 목적은 같습니다. 바로 하나의 DATA를 사용한다면, 요청을 한꺼번에 다 실행하는게 아니라 DATA를 가지고 놀수 있게 키를 발급해서 순서를 정합니다. 내가 Data를 갖고 놀 때 다른 요청들은 키를 기다리게 하는 방식으로 동시성 제어를 만들 수 있습니다!!!
