node.js의 http.ServerResponse 객체에 있는 write 메소드가 동기식인 이유는 무엇입니까?
给我你的怀抱
给我你的怀抱 2017-05-31 10:38:35
0
3
683
으아악

마지막 두줄은 1번과 5번이에요!
책에서는 http.ServerResponse 개체가 stream.Writable(쓰기 가능한 스트림)을 구현한다고 나와 있습니다. 그러나 쓰기 가능한 스트림은 일반적으로 비동기식(예: fs 쓰기 스트림, zlib 스트림, 하위 프로세스의 stdin)이므로 이벤트 중심 서비스 모델에 적합합니다. 이제 제가 테스트한 것은 res.write 동기화입니다. 즉, 이벤트 큐의 다음 콜백이 실행되기 전에 이 콜백이 실행되어야 한다는 뜻입니까?
function(req,res)는 ruquest 이벤트의 콜백입니다. 즉, 수만 개의 동시 요청을 처리하는 경우 요청이 없더라도 수만 개의 function(req,res)을 실행해야 함을 의미합니다. function(req,res)에서 CPU를 많이 사용하는 애플리케이션이 약간 추가되면 사용자 액세스가 지연된다는 뜻이 아닌가요? 하지만 노드는 집약적인 IO를 처리하는 데 매우 능숙합니다. 내가 잘못 생각한 걸까?

이 표시 기능을 의도적으로 만들었습니다. js는 단일 스레드이고 CPU 집약적인 비즈니스를 잘 처리하지 못하기 때문에 res.write(show()+''+c) 시간이 더 오래 걸리고 res.write 비동기가 더 좋아 보입니다. ? res.write가 비동기이면 c=a+b가 먼저 실행되고 c는 5여야 ​​합니다.

给我你的怀抱
给我你的怀抱

모든 응답(3)
伊谢尔伦

노드의 장점은 높은 동시성을 처리할 수 있고 많은 수의 요청을 처리할 수 있다는 점이지만, 응답을 처리하거나 데이터베이스를 쿼리하는 작업은 레스토랑처럼 요리사와 웨이터가 있는 다른 스레드에서 처리합니다. (싱글 스레드) 셰프 한 명과 파트타임 웨이터만 있는 일반적인 웹 서비스 프레임워크와는 달리,
위의 상황은 IO 집약적이지는 않지만 레스토랑의 셰프가 너무 바빠서 요리를 처리할 수 없습니다. 천천히 접시를 서빙하는 웨이터.

滿天的星座

분명히 실행show()时,还没有开始执行write()이므로 테스트 방법 자체가 잘못되었습니다.

滿天的星座

write내부 버퍼에 데이터를 쓴 뒤 반환하는 것 뿐이므로 데이터를 보낸 후 반환한다는 의미는 아니므로 CPU 시간을 거의 차지하지 않습니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿