오늘 한 일

  • 사용자 페이지들 화면, 메뉴 대조 시작
  • 기존 ppt 누락된 화면이 많아 ppt 채워넣음. 내일부터는 대조결과 엑셀에 정리
  • 인프런 개발자 기본기 강의 멀티 스레드와 멀티 프로세스, 동기와 비동기, 블락과 논블락 - 1, 동기와 비동기, 블락과 논블락 - 2 듣고 정리

멀티 스레드

  • 싱글 스레딩 (single-threaded process) : 하나의 프로세스에서 하나의 스레드만 사용하는 것
  • 멀티 스레딩 (multithreaded process) : 여러 개의 스레드를 사용하는 것
  • 멀티 스레딩 사용하는 대표적인 경우 : 독립적인 I/O Bounded 작업 많은 경우. (ex. 여러 사이트 크롤링)

멀티 프로세스

  • main process가 자식 process를 fork
  • 멀티 프로세싱 언제? 독립적인 CPU Bounded 작업 많은 경우 (ex. 머신러닝 전처리 등)

멀티 스레드 vs 멀티 프로세스 차이

  • 스레드는 결국 하나의 프로세스 안에서 해당 프로세스 자원(메모리)을 공유함(code, data 등). 따라서 하나의 스레드에 문제 생기면 다른 스레드에 영향 미칠 수 있음
  • 멀티 스레드 장점 : 자원 공유 -> 코드 짜기 쉬움. 메모리공간 적게 사용. 스레드 간 컨텍스트 스위칭 빠름

동기화 문제 (concurrency problem)

  • 멀티 스레딩 구현 시 메모리 공유로 인한 장애로 2개 이상의 스레드가 동일 데이터에 접근하여 작업할 경우 생기는 문제
  • 동기화 작업: 작업처리순서 컨트롤, 공유자원 접근 컨트롤을 설정하는 작업
  • 임계 영역 (Critical Section) : 동일한 자원을 여러 스레드가 동시에 접근하는 작업 실행하는 코드 영역
  • Lock (락): 공유 객체에 여러 스레드가 동시에 접근하기 못하도록 잠그는 기능. 모든 객체가 힙 영역에 생성될 때 자동으로 만들어짐
  • 프로그래밍 언어별로 멀티 스레딩, 멀티 프로세싱 효율이 다를 수 있음

동기와 비동기 : 두 작업의 작동방식

동기 (Synchronous)

  • 작업 A가 작업 B에 요청하고 작업 끝낼 때까지 기다려서 결과를 받는 방식
  • 대부분의 코드방식. 직관적이고 이해가 쉬우며 설계가 비교적 단순함

비동기 (Asynchronous)

  • 작업 A가 작업 B에게 작업 요청을 하고 해당 작업이 끝나길 기다리지 않고 다른 작업함
  • 작업 요청과 결과 수신을 같이 하지 않기 때문에, 결과를 수신하고 응답을 처리하는 코드를 따로 작성해야 함
  • 보통 콜백(Callback) 방식 많이 활용

블락과 논블락 : 작업의 상태

블락 (Block)

함수 A가 함수 호출 시 프로세스 제어권은 함수B로 넘어감. 함수B가 프로세스 제어하는 동안 함수 A는 아무것도 하지않고 기다리는데, 이때 함수 A는 블락 상태에 있다고 하고 함수B는 블락킹 함수라고 한다.

논블락 (Non-Block)

함수A에서 함수B를 스레드로 생성하는 함수 호출. 스레드 생성 함수는 함수B를 별도 스레드로 생성하고 특정객체 바로 리턴
함수 A가 있는 스레드는 함수 호출 이후의 일을 계속 하게 되는데 이렇게 '블락'되지 않은 상태를 '논블락' 상태라고 하고 호출 되어도 호출한 함수를 블락하지 않는 B 함수를 논블락킹 함수라고 한다.

용어정리

  • BNPL (Buy Now , Pay Later) : 지금 사고 나중에 내라 는 이름대로, 소비자가 결제하면 BNPL 업체가 판매자에게 먼저 대금을 지불, 소비자는 여러 차례에 걸쳐 BNPL 업체에 돈을 갚는 형식의 결제 시스템. 이 과정에서 기존 신용카드와는 달리 신용 점수 필요없음 (순살브리핑: 발등에 불 떨어진 BNPL 업체들?💰)
profile
문서화를 좋아하는 개발자

0개의 댓글