blocking
-
Virtual Thread in JAVA개발/기술 2026. 1. 14. 11:46
작업마다 Java Thread 를 생성하면 OS 단위에서 Thread 를 생성하기 때문에 비싸고 시간도 오래 걸린다. 그래서 Java 진영에선 기존에 생성하던 Java Thread 를 Platform Thread 라고 정의하고 Virtual Thread 라는 것을 새로 만들어서 Platform Thread 위에서 실행되는 구조를 잡았다. Virtual Thread 는 Heap 메모리에 있는 객체다. Virtual 스레드는 생성 작업이 JVM 위에서 이뤄지기 때문에 Platform Thread 에 비해서 생성 비용도 싸다. Stack 이나 IP 같은 저장공간도 JVM 내에서 컨텍스트 스위칭 되는 형태이기 때문에 불필요한 시스템 콜이 없어지게 된다 Java Thread 에 비해서 커널레벨까지 내려가서 실행..
-
Nodejs Blocking/Non-Blocking,개발 2023. 1. 26. 17:33
노드제이에스에서 Blocking은 자바스크립트의 실행을 위해 자바스크립트 작업이 아닌(non-JavaScript operation)의 작업이 끝날 때 까지 기다려야 하는 것을 말한다. 주로 I/O 작업의 실행을 위해 기다릴 때 Blocking 이 생긴다. libuv를 사용하는 노드 제이에스 동기 메서드가 대표적인 블로킹 작업이다. 표준 라이브러리의 I/O에서는 대체로 Blocking 메서드와 Non-Blocking 메서드를 모두 제공한다. const fs = require('fs'); const data = fs.readFileSync('/file.md'); // 파일을 읽을 때까지 여기서 블로킹됩니다. console.log(data); moreWork(); // console.log 이후 실행될 것입니..
-
Blocking/Non-Blocking Sync/Async개발 2023. 1. 26. 17:28
Blocking/Non-Blocking Blocking, Non-Blocking은 제어권을 처리하는 방법론이다. Blocking은 현재의 작업이 모두 끝난후에 다음 작업에게 제어권을 넘겨준다. 예를 들어 Blocking 방식으로 CPU가 I/O 작업을 처리한다면 CPU는 I/O 작업이 완료 될 때까지 다른 업무를 하지 않는다. Non Blocking은 이와 반대다. 현재 작업이 모두 끝나지 않더라도 다른 작업에게 제어권을 건네줄 수 있다. CPU가 I/O 작업을 모두 처리하지 않더라도 다른 작업에게 제어권을 넘겨준다면 Non-Blocking이다. Sync/Async 작업의 결과값을 신경 쓰느냐 쓰지 않느냐와 관련 있다. Sync는 호출된 함수의 결과를 호출한 함수가 신경 쓴다. 함수의 리턴 값이 필요한 ..