상세 컨텐츠

λ³Έλ¬Έ 제λͺ©

λ©€ν‹°μŠ€λ ˆλ”© vs 비동기

CS/운영체제🐣

by :ν•΄ν”Όλž˜λΉ—πŸΎ 2024. 12. 26. 10:39

λ³Έλ¬Έ

λ©€ν‹°μŠ€λ ˆλ”©κ³Ό λΉ„λ™κΈ°λŠ” λͺ¨λ‘ 병렬성과 λ™μ‹œμ„±μ„ μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ κ°œλ…μ΄λ‹€.

μž‘λ™ 방식, μ‚¬μš©ν•˜λŠ” ν™˜κ²½μ—μ„œ 차이가 μžˆλ‹€.


λ©€ν‹°μŠ€λ ˆλ”© (Multithreading)

λ©€ν‹°μŠ€λ ˆλ”©μ€ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μ—¬λŸ¬ μŠ€λ ˆλ“œλ₯Ό μƒμ„±ν•˜μ—¬ λ³‘λ ¬λ‘œ μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ” 방식이닀.

각 μŠ€λ ˆλ“œλŠ” λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰λ˜λ©°, μ„œλ‘œ λ©”λͺ¨λ¦¬λ₯Ό κ³΅μœ ν•œλ‹€.


μž‘λ™ 방식

CPU의 μ½”μ–΄κ°€ μ—¬λŸ¬ μŠ€λ ˆλ“œλ₯Ό λ²ˆκ°ˆμ•„ μ‹€ν–‰ν•˜κ±°λ‚˜, μ—¬λŸ¬ μ½”μ–΄μ—μ„œ λ™μ‹œμ— μŠ€λ ˆλ“œλ₯Ό μ‹€ν–‰ν•˜μ—¬ 병렬 μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€.

μŠ€λ ˆλ“œ κ°„μ˜ μ»¨ν…μŠ€νŠΈ μŠ€μœ„μΉ­(μž‘μ—… μ „ν™˜)이 λ°œμƒν•˜λ―€λ‘œ 일뢀 μ˜€λ²„ν—€λ“œκ°€ μ‘΄μž¬ν•œλ‹€.

주둜 CPU λ°”μš΄λ“œ μž‘μ—…(κ³„μ‚°λŸ‰μ΄ λ§Žμ€ μž‘μ—…)에 μ ν•©ν•˜λ‹€.

 

μ‚¬μš© μ˜ˆμ‹œ

λŒ€μš©λŸ‰ 데이터 처리 (예: 데이터 뢄석, 이미지 λ Œλ”λ§).

μ„œλ²„μ—μ„œ λ™μ‹œμ— μ—¬λŸ¬ μš”μ²­μ„ μ²˜λ¦¬ν•  λ•Œ(μŠ€λ ˆλ“œ ν’€ 방식).

 

μž₯점

CPU μ½”μ–΄λ₯Ό μ΅œλŒ€ν•œ ν™œμš©ν•˜μ—¬ 병렬 μ²˜λ¦¬κ°€ κ°€λŠ₯ν•˜λ‹€

μž‘μ—…μ΄ 독립적일 λ•Œ νš¨μœ¨μ μ΄λ‹€

 

단점

μŠ€λ ˆλ“œ κ°„ 곡유 μžμ› μ ‘κ·Ό μ‹œ λ°λ“œλ½μ΄λ‚˜ 레이슀 μ»¨λ””μ…˜ 문제λ₯Ό λ°©μ§€ν•΄μ•Ό ν•œλ‹€

μŠ€λ ˆλ“œ 생성과 관리에 λΉ„μš©μ΄ λ°œμƒν•œλ‹€

 

비동기 (Asynchronous Programming)

μ •μ˜

λΉ„λ™κΈ°λŠ” μž‘μ—…μ„ λΉ„λ™κΈ°μ μœΌλ‘œ μ‹€ν–‰ν•˜μ—¬, ν•˜λ‚˜μ˜ μž‘μ—…μ΄ μ™„λ£Œλ  λ•ŒκΉŒμ§€ 기닀리지 μ•Šκ³  λ‹€μŒ μž‘μ—…μ„ μ²˜λ¦¬ν•  수 μžˆλ„λ‘ ν•˜λŠ” 방식이닀.

 

μž‘λ™ 방식

이벀트 루프(Event Loop)와 콜백 λ©”μ»€λ‹ˆμ¦˜μ„ 톡해 μž‘λ™ν•œλ‹€

I/O λ°”μš΄λ“œ μž‘μ—…(λ„€νŠΈμ›Œν¬, 파일 읽기/μ“°κΈ°, DB 쑰회)에 μ ν•©ν•˜λ‹€

ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œ(주둜 메인 μŠ€λ ˆλ“œ)κ°€ λ…ΌλΈ”λ‘œν‚Ή λ°©μ‹μœΌλ‘œ μž‘μ—…μ„ κ΄€λ¦¬ν•˜λ©°, μ™„λ£Œλœ μž‘μ—…μ€ 이벀트 νμ—μ„œ μ²˜λ¦¬λœλ‹€.

 

μ‚¬μš© μ˜ˆμ‹œ

API 호좜 및 응닡 처리

μ›Ή λΈŒλΌμš°μ €μ—μ„œ μ‚¬μš©μž μž…λ ₯을 μ²˜λ¦¬ν•˜λ©΄μ„œ λ™μ‹œμ— 파일 λ‹€μš΄λ‘œλ“œ

 

μž₯점

λ©”λͺ¨λ¦¬μ™€ μŠ€λ ˆλ“œ 생성 λΉ„μš©μ΄ 적닀

λŒ€κ·œλͺ¨ I/O μž‘μ—… μ²˜λ¦¬μ— νš¨μœ¨μ μ΄λ‹€

 

단점

λ³΅μž‘ν•œ 비동기 흐름을 κ΄€λ¦¬ν•˜κΈ° μ–΄λ ΅λ‹€(콜백 ν—¬).

CPU λ°”μš΄λ“œ μž‘μ—…μ—λŠ” μ ν•©ν•˜μ§€ μ•Šλ‹€.

728x90

κ΄€λ ¨κΈ€ 더보기