추가로 위와는 다른 질문이지만 진행하던 프로젝트를 실행하면 더미 클라이언트가 총 5번의 메세지를 보내고 그걸 서버가 받아서 출력하는데 [From Client] Hello World! 0 Transferred bytes: 26 [From Client] Hello World! 1Hello World! 2Hello World! 3Hello World! 4 [From Client] Hello World! 0Hello World! 1Hello World! 2Hello World! 3Hello World! 4 Transferred bytes: 26 위와 같이 처음엔 클라이언트가 5번 보내기도 전에 서버가 Receive해서 HelloWorld 0만 출력되고 다음 Receive때 전에 못 받았던 1,2,3,4 데이터를 받아오는데 대체 해당 데이터는 어디에 저장되어 있다가 가져오는건가요?
아하, 그럼 _listenSocket.AcceptAsync(args)가 호출된 뒤 부터 연결에 성공할 시 args의 이벤트가 작동하여 동작하는데 근데 만약 _listenSocket.AcceptAsync(args)가 호출된 순간에 양 끝단의 컴퓨터가 연결이 된다면 이벤트가 정상적으로 동작하지 않아 저희가 직접 호출해주는거죠?
2번 질문의 답변에서 " '동시에' 구동 가능한 쓰레드는 코어(alu) 개수와 동일합니다." 라는 뜻은 서로 다른 코어에서 한 전역변수를 동시에 Store할 가능성도 있다는거 아닌가요? 동일 코어의 서로 다른 쓰레드는 애초에 서로 근접하게 접근할 수는 있어도 완벽하게 동시에 접근은 불가능한데 서로 다른 코어에서 동작하는 쓰레드 끼리는 완전 같은 시간상에 접근할 가능성이 있지 않나요? 그럼 Interlock 계열의 메서드를 사용하더라도 다른 코어의 쓰레드가 동시에 Interlock에 접근하면 Interlock의 의미가 없어지는것 처럼 느껴지네요.