자물쇠가 없어도 데드락은 걸린다
화면이 얼어붙었는데 예외도 로그도 없습니다. lock 은 한 줄도 없습니다. .Result 한 줄이면 충분합니다.
await 는 기다림을 넘길 뿐 일을 넘기지 않는다
무거운 계산에 async 를 붙였는데 화면이 그대로 멈춥니다. 안에 await 를 하나 넣어도 마찬가지입니다. 재보면 이유가 보입니다.
async 는 스레드를 만들지 않는다
스레드가 여럿일 때 생기는 문제와 async 는 다른 이야기입니다.
끝이 없는 큐는 메모리가 대신 끝을 낸다
넣는 쪽이 꺼내는 쪽보다 빠르면 큐가 자랍니다. 상한을 안 정하면 남은 메모리가 상한이 됩니다.
소켓에 둘이 동시에 쓰면 프레임이 섞인다
자물쇠로 못 막는 자리가 있습니다. 기다리게 하는 대신 줄을 세워 한 명만 쓰게 만듭니다.