현재 버전

먼가 좀 오해가 있어 보이네요.

예를들어 

예제1)
A 라는 브라우저에서 B 서버에 무엇인가 요청하고 기다림.  (블로킹 콜)
B 서버는 C 미들웨어에 넘기고 바로 리턴받아서 A에게 바로 리턴해줌. (논블로킹 콜) 
A 는 요청 성공 메세지 (결과 메세지가 아님) 를 받음.
 
A는 요청 결과 메세지를 받기 전까지 다른 행동을 함~~

B서버는 시간이 흐른 뒤, C 미들웨어에게 던졌던 결과를 D 허브를 통해서 전달받음.
B서버는 A 에게 결과를 PUSH함.
A는 결과를 받아서 그것이 OK라면 F 서버로 요청. 

이 경우 업계에서는 "비동기" 방식 처리 라고 말합니다.
A 는 자신의 첫번째 요청에 대한 결과를 계속 기다리지 않고 다른 행위를 하기 때문이죠.

하지만 위 글의 논리대로라면 이 방식은 "동기" 식이 됩니다.
결과를 받은 후에야 그 결과에 맞는 행위를 시작 하니까요.

결과를 받지 않고, 그 결과에 따른 행위를 시작 하는 것은 대게 없습니다.

예제2)
IOCP 같은 대표적인 asynchronous  i/o 시스템이 있는데 (proactor 패턴의 부류) 
read / write 를 위임시키고, 다른 일을 처리하다가 
read/write 결과가 compleation 되는 시점에는 그 "결과" 를 가지고서 이어서 처리하게 됩니다.
즉 해당 관심사에 대해서는 순차적입니다.

예제3)
Future 패턴에서도 완료됬는지 계속 물어보는 방식과
완료되면 연결된 함수를 호출 하는 방식이 든간에..

둘 다 비동기 방식입니다.
전자는 중간 중간 멈추고 확인 할 뿐이고
후자는 확인하지 않고 다른 쓰레드에서 호출 할 뿐.

어쨋건 둘 다 결과에 의존하는 행위를 결국 하게 되겠지요. 역시 순차적입니다.

따라서 
"현재 작업의 응답과 다음 작업의 요청" " 여기에서 오해가 시작되어..  
"동기라는 것은 작업들이 순차적인 흐름을 가지고 있다는 것"  로 발전되어...

동기,비동기 구분의 근거로 모든 예가 작동하고 있는데. 좀 무리가 있다라고 판단됩니다.


p.s

비동기/동기/블록/논블록을 조합해서 명확히 구분하려고하는
모든 시도는 결국 실패하게 된다고 생각합니다.
그냥 대략 이런 경우에는 이렇게 말하더라~~ 정도로 구분하면 족한 개념들일뿐.


수정 이력

2019-09-19 18:47:26 에 아래 내용에서 변경 됨 #5

먼가 좀 문제가 있어 보이네요.

예를들어 

예제1)
A 라는 브라우저에서 B 서버에 무엇인가 요청하고 기다림.  (블로킹 콜)
B 서버는 C 미들웨어에 넘기고 바로 리턴받아서 A에게 바로 리턴해줌. (논블로킹 콜) 
A 는 요청 성공 메세지 (결과 메세지가 아님) 를 받음.
 
A는 요청 결과 메세지를 받기 전까지 다른 행동을 함~~

B서버는 시간이 흐른 뒤, C 미들웨어에게 던졌던 결과를 D 허브를 통해서 전달받음.
B서버는 A 에게 결과를 PUSH함.
A는 결과를 받아서 그것이 OK라면 F 서버로 요청. 

이 경우 업계에서는 "비동기" 방식 처리 라고 말합니다.
A 는 자신의 첫번째 요청에 대한 결과를 계속 기다리지 않고 다른 행위를 하기 때문이죠.

하지만 위 글의 논리대로라면 이 방식은 "동기" 식이 됩니다.
결과를 받은 후에야 그 결과에 맞는 행위를 시작 하니까요.

결과를 받지 않고, 그 결과에 따른 행위를 시작 하는 것은 대게 없습니다.

예제2)
IOCP 같은 대표적인 asynchronous  i/o 시스템이 있는데 (proactor 패턴의 부류) 
read / write 를 위임시키고, 다른 일을 처리하다가 
read/write 결과가 compleation 되는 시점에는 그 "결과" 를 가지고서 이어서 처리하게 됩니다.
즉 해당 관심사에 대해서는 순차적입니다.

예제3)
Future 패턴에서도 완료됬는지 계속 물어보는 방식과
완료되면 연결된 함수를 호출 하는 방식이 든간에..

둘 다 비동기 방식입니다.
전자는 중간 중간 멈추고 확인 할 뿐이고
후자는 확인하지 않고 다른 쓰레드에서 호출 할 뿐.

어쨋건 둘 다 결과에 의존하는 행위를 결국 하게 되겠지요. 역시 순차적입니다.

따라서 
"현재 작업의 응답과 다음 작업의 요청" " 여기에서 오해가 시작되어..  
"동기라는 것은 작업들이 순차적인 흐름을 가지고 있다는 것"  로 발전되어...

동기,비동기 구분의 근거로 모든 예가 작동하고 있는데. 좀 무리가 있다라고 판단됩니다.


p.s

비동기/동기/블록/논블록을 조합해서 명확히 구분하려고하는
모든 시도는 결국 실패하게 된다고 생각합니다.
그냥 대략 이런 경우에는 이렇게 말하더라~~ 정도로 구분하면 족한 개념들일뿐.

2019-09-19 18:45:50 에 아래 내용에서 변경 됨 #4

먼가 좀 문제가 있어 보이네요.

예를들어 

예제1)
A 라는 브라우저에서 B 서버에 무엇인가 요청하고 기다림.  (블로킹 콜)
B 서버는 C 미들웨어에 넘기고 바로 리턴받아서 A에게 바로 리턴해줌. (논블로킹 콜) 
A 는 요청 성공 메세지 (결과 메세지가 아님) 를 받음.
 
A는 요청 결과 메세지를 받기 전까지 다른 행동을 함~~

B서버는 시간이 흐른 뒤, C 미들웨어에게 던졌던 결과를 D 허브를 통해서 전달받음.
B서버는 A 에게 결과를 PUSH함.
A는 결과를 받아서 그것이 OK라면 F 서버로 요청. 

이 경우 업계에서는 "비동기" 방식 처리 라고 말합니다.
A 는 자신의 첫번째 요청에 대한 결과를 계속 기다리지 않고 다른 행위를 하기 때문이죠.

하지만 위 글의 논리대로라면 이 방식은 "동기" 식이 됩니다.
결과를 받은 후에야 그 결과에 맞는 행위를 시작 하니까요.

결과를 받지 않고, 그 결과에 따른 행위를 시작 하는 것은 대게 없습니다.

예제2)
IOCP 같은 대표적인 asynchronous  i/o 시스템이 있는데 (proactor 패턴의 부류) 
read / write 를 위임시키고, 다른 일을 처리하다가 
read/write 결과가 compleation 되는 시점에는 그 "결과" 를 가지고서 처리하게 됩니다.
즉 해당 관심사에 대해서는 순차적입니다.

예제3)
Future 패턴에서도 완료됬는지 계속 물어보는 방식과
완료되면 연결된 함수를 호출 하는 방식이 든간에..

둘 다 비동기 방식입니다.
전자는 중간 중간 멈추고 확인 할 뿐이고
후자는 확인하지 않고 다른 쓰레드에서 호출 할 뿐.

어쨋건 둘 다 결과에 의존하는 행위를 결국 하게 되겠지요. 역시 순차적입니다.

따라서 
"현재 작업의 응답과 다음 작업의 요청" " 여기에서 오해가 시작되어..  
"동기라는 것은 작업들이 순차적인 흐름을 가지고 있다는 것"  로 발전되어...

동기,비동기 구분의 근거로 모든 예가 작동하고 있는데. 좀 무리가 있다라고 판단됩니다.


p.s

비동기/동기/블록/논블록을 조합해서 명확히 구분하려고하는
모든 시도는 결국 실패하게 된다고 생각합니다.
그냥 대략 이런 경우에는 이렇게 말하더라~~ 정도로 구분하면 족한 개념들일뿐.

2019-09-19 18:45:17 에 아래 내용에서 변경 됨 #3

먼가 좀 문제가 있어 보이네요.

예를들어 

예제1)
A 라는 브라우저에서 B 서버에 무엇인가 요청하고 기다림.  (블로킹 콜)
B 서버는 C 미들웨어에 넘기고 바로 리턴받아서 A에게 바로 리턴해줌. (논블로킹 콜) 
A 는 요청 성공 메세지 (결과 메세지가 아님) 를 받음.
 
A는 요청 결과 메세지를 받기 전까지 다른 행동을 함~~

B서버는 시간이 흐른 뒤, C 미들웨어에게 던졌던 결과를 D 허브를 통해서 전달받음.
B서버는 A 에게 결과를 PUSH함.
A는 결과를 받아서 그것이 OK라면 F 서버로 요청. 

이 경우 업계에서는 "비동기" 방식 처리 라고 말합니다.
A 는 자신의 첫번째 요청에 대한 결과를 계속 기다리지 않고 다른 행위를 하기 때문이죠.

하지만 위 글의 논리대로라면 이 방식은 "동기" 식이 됩니다.
결과를 받은 후에야 그 결과에 맞는 행위를 시작 하니까요.

결과를 받지 않고, 그 결과에 따른 행위를 시작 하는 것은 대게 없습니다.

예제2)
IOCP 같은 대표적인 asynchronous  i/o 시스템이 있는데 (proact 패턴이라고도 하는데요) 
read / write 를 위임시키고, 다른 일을 처리하다가 
read/write 결과가 compleation 되는 시점에는 그 "결과" 를 가지고서 처리하게 됩니다.
즉 해당 관심사에 대해서는 순차적입니다.

예제3)
Future 패턴에서도 완료됬는지 계속 물어보는 방식과
완료되면 연결된 함수를 호출 하는 방식이 든간에..

둘 다 비동기 방식입니다.
전자는 중간 중간 멈추고 확인 할 뿐이고
후자는 확인하지 않고 다른 쓰레드에서 호출 할 뿐.

어쨋건 둘 다 결과에 의존하는 행위를 결국 하게 되겠지요. 역시 순차적입니다.

따라서 
"현재 작업의 응답과 다음 작업의 요청" " 여기에서 오해가 시작되어..  
"동기라는 것은 작업들이 순차적인 흐름을 가지고 있다는 것"  로 발전되어...

동기,비동기 구분의 근거로 모든 예가 작동하고 있는데. 좀 무리가 있다라고 판단됩니다.


p.s

비동기/동기/블록/논블록을 조합해서 명확히 구분하려고하는
모든 시도는 결국 실패하게 된다고 생각합니다.
그냥 대략 이런 경우에는 이렇게 말하더라~~ 정도로 구분하면 족한 개념들일뿐.

2019-09-19 18:44:26 에 아래 내용에서 변경 됨 #2

먼가 좀 문제가 있어 보이네요.

예를들어 

예제1)
A 라는 브라우저에서 B 서버에 무엇인가 요청하고 기다림.  (블로킹 콜)
B 서버는 C 미들웨어에 넘기고 바로 리턴받아서 A에게 바로 리턴해줌. (논블로킹 콜) 
A 는 요청 성공 메세지 (결과 메세지가 아님) 를 받음.
 
A는 요청 결과 메세지를 받기 전까지 다른 행동을 함~~

B서버는 시간이 흐른 뒤, C 미들웨어에게 던졌던 결과를 D 허브를 통해서 전달받음.
B서버는 A 에게 결과를 PUSH함.
A는 결과를 받아서 그것이 OK라면 F 서버로 요청. 

이 경우 업계에서는 "비동기" 방식 처리 라고 말합니다.
A 는 자신의 첫번째 요청에 대한 결과를 계속 기다리지 않고 다른 행위를 하기 때문이죠.

하지만 위 글의 논리대로라면 이 방식은 "동기" 식이 됩니다.
결과를 받은 후에야 그 결과에 맞는 행위를 시작 하니까요.

결과를 받지 않고, 그 결과에 따른 행위를 시작 하는 것은 대게 없습니다.

예제2)
IOCP 같은 대표적인 asynchronous  i/o 시스템이 있는데 (proact 패턴이라고도 하는데요) 
read / write 를 위임시키고, 다른 일을 처리하다가 
read/write 결과가 compleation 되는 시점에는 그 "결과" 를 가지고서 처리하게 됩니다.
즉 해당 관심사에 대해서는 순차적입니다.

예제3)
Future 패턴에서도 완료됬는지 계속 물어보는 방식과
완료되면 연결된 함수를 호출 하는 방식이 든간에..

둘 다 비동기 방식입니다.
전자는 중간 중간 멈추고 확인 할 뿐이고
후자는 확인하지 않고 다른 쓰레드에서 호출 할 뿐.

어쨋건 둘 다 결과에 의존하는 행위를 결국 하게 되겠지요. 역시 순차적입니다.

따라서 
"현재 작업의 응답과 다음 작업의 요청" " 여기에서 오해가 시작되어..  
"동기라는 것은 작업들이 순차적인 흐름을 가지고 있다는 것"  로 발전되어...

동기,비동기 구분의 근거로 모든 예가 작동하고 있는데. 좀 무리가 있다라고 판단됩니다.


p.s

비동기/동기/블록/논블록을 명확히 구분하려고하는 모든 시도는 결국 실패하게 된다고 생각합니다.
그냥 대략 이런 경우에는 이렇게 말하더라~~ 정도로 구분하면 족한 개념들일뿐.

2019-09-19 18:43:48 에 아래 내용에서 변경 됨 #1

먼가 좀 문제가 있어 보이네요.

예를들어 

예제1)
A 라는 브라우저에서 B 서버에 무엇인가 요청하고 기다림.  (블로킹 콜)
B 서버는 C 미들웨어에 넘기고 바로 리턴받아서 A에게 바로 리턴해줌. (논블로킹 콜) 
A 는 요청 성공 메세지 (결과 메세지가 아님) 를 받음.
 
A는 요청 결과 메세지를 받기 전까지 다른 행동을 함~~

B서버는 시간이 흐른 뒤, C 미들웨어에게 던졌던 결과를 D 허브를 통해서 전달받음.
B서버는 A 에게 결과를 PUSH함.
A는 결과를 받아서 그것이 OK라면 F 서버로 요청. 

이 경우 업계에서는 "비동기" 방식 처리 라고 말합니다.
A 는 자신의 첫번째 요청에 대한 결과를 계속 기다리지 않고 다른 행위를 하기 때문이죠.

하지만 위 글의 논리대로라면 이 방식은 "동기" 식이 됩니다.
결과를 받은 후에야 그 결과에 맞는 행위를 시작 하니까요.

결과를 받지 않고, 그 결과에 따른 행위를 시작 하는 것은 대게 없습니다.

예제2)
IOCP 같은 대표적인 asynchronous  i/o 시스템이 있는데 (proact 패턴이라고도 하는데요) 
read / write 를 위임시키고, 다른 일을 처리하다가 
read/write 결과가 compleation 되는 시점에는 그 "결과" 를 가지고서 처리하게 됩니다.
즉 해당 관심사에 대해서는 순차적입니다.

예제3)
Future 패턴에서도 완료됬는지 계속 물어보는 방식과
완료되면 연결된 함수를 호출 하는 방식이 든간에..

둘 다 비동기 방식입니다.
전자는 중간 중간 멈추고 확인 할 뿐이고
후자는 확인하지 않고 다른 쓰레드에서 호출 할 뿐.

어쨋건 둘 다 결과에 의존하는 행위를 결국 하게 되겠지요. 역시 순차적입니다.

따라서 
"현재 작업의 응답과 다음 작업의 요청" " 여기에서 오해가 시작되어..  
"동기라는 것은 작업들이 순차적인 흐름을 가지고 있다는 것"  로 발전되어...

동기,비동기 구분의 근거로 모든 예가 작동하고 있는데. 좀 무리가 있다라고 판단됩니다.