Skip to content

Latest commit

Β 

History

History
28 lines (17 loc) Β· 3.53 KB

Concurrency-Programming-Guide.md

File metadata and controls

28 lines (17 loc) Β· 3.53 KB

Concurrency Programming Guide

πŸ”— Concurrency Programming Guide

Introduction

λ™μ‹œμ„±(Concurrency)은 λ™μ‹œμ— λ°œμƒν•˜λŠ” λ‹€μˆ˜μ˜ 것듀에 λŒ€ν•œ κ°œλ…μ΄λ‹€. λ©€ν‹°μ½”μ–΄μ˜ ν™•μ‚°κ³Ό 각각의 ν”„λ‘œμ„Έμ„œμ˜ μ½”μ–΄μ˜ 개수 μ¦κ°€μ˜ μ‹€ν˜„μœΌλ‘œ, μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμžλŠ” κ·Έκ²ƒλ“€λ‘œ 이득을 μ–»λŠ” μƒˆλ‘œμš΄ 방식이 ν•„μš”ν•˜λ‹€. OS X와 iOS 같은 μš΄μ˜μ²΄μ œλŠ” λ‹€μˆ˜μ˜ ν”„λ‘œκ·Έλž¨μ„ λ³‘λ ¬μ μœΌλ‘œ μ‹€ν–‰ν•˜λŠ” 것이 κ°€λŠ₯ν•˜μ§€λ§Œ, λŒ€λΆ€λΆ„μ˜ ν”„λ‘œκ·Έλž¨μ€ λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ‹€ν–‰λ˜κ³  ν”„λ‘œμ„Έμ„œλ₯Ό μ—°μ†μ μœΌλ‘œ μš”κ΅¬ν•˜μ§€ μ•ŠλŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€. μœ μ €μ˜ 관심을 끌고 컴퓨터λ₯Ό 계속 λ°”μ˜κ²Œ ν•˜λŠ” 것은 ν¬κ·ΈλΌμš΄λ“œμ˜ 앱이닀. λ§Œμ•½ 앱이 μˆ˜ν–‰ν•΄μ•Ό ν•  일이 λ§Žμ§€λ§Œ μ‚¬μš© ν•  수 μžˆλŠ” μ½”μ–΄μ˜ μΌλΆ€λ§Œ μœ μ§€ν•œλ‹€λ©΄, μΆ”κ°€ ν”„λ‘œμ„Έμ‹± μžμ›μ€ λ‚­λΉ„λ˜λŠ” 것이닀.

κ³Όκ±°μ—λŠ” μ•±μ˜ λ™μ‹œμ„±μ„ λ„μž…ν•˜λ €λ©΄, ν•˜λ‚˜ μ΄μƒμ˜ μ“°λ ˆλ“œκ°€ ν•„μš”ν–ˆλ‹€. λΆˆν–‰νžˆλ„ μ“°λ ˆλ“œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 것은 도전적이닀. μ“°λ ˆλ“œλŠ” μˆ˜λ™μœΌλ‘œ 관리 ν•΄μ•Ό ν•˜λŠ” low-level 도ꡬ이닀. 앱에 졜적의 μ“°λ ˆλ“œ 개수λ₯Ό μ œκ³΅ν•˜λŠ” 것은 ν˜„μž¬μ˜ μ‹œμŠ€ν…œμ˜ μ μž¬λŸ‰κ³Ό ν•˜λ“œμ›¨μ–΄ 기반으둜 λ™μ μœΌλ‘œ λ³€ν•  수 μžˆμœΌλ―€λ‘œ, μ μ ˆν•œ μ“°λ ˆλ”© μ†”λ£¨μ…˜ κ΅¬ν˜„μ€ λΆˆκ°€λŠ₯ ν•˜μ§€λŠ” μ•Šμ§€λ§Œ 맀우 μ–΄λ ΅λ‹€. κ²Œλ‹€κ°€, μ“°λ ˆλ“œμ™€ ν•¨κ»˜ μ‚¬μš©λ˜λŠ” 동기화 λ©”μ»€λ‹ˆμ¦˜μ€ 일반적으둜 μ„±λŠ₯ ν–₯상을 보μž₯ν•˜μ§€ μ•ŠμœΌλ©΄μ„œ μ†Œν”„νŠΈμ›¨μ–΄ 섀계에 λ³΅μž‘μ„±κ³Ό μœ„ν—˜μ„ λ”ν•œλ‹€.

OS Xκ³Ό iOS λͺ¨λ‘ μ „ν†΅μ μœΌλ‘œ μ„€κ³„λœ μ“°λ ˆλ“œ 베이슀 μ‹œμŠ€ν…œκ³Ό μ•± 보닀, λ™μ‹œμ— λ°œμƒν•˜λŠ” νƒœμŠ€ν¬μ˜ μˆ˜ν–‰μ„ λΉ„λ™κΈ°μ μœΌλ‘œ μ ‘κ·Όν•˜λŠ” 방식을 μ±„νƒν•œλ‹€. μ“°λ ˆλ“œλ₯Ό 직접 λ§Œλ“œλŠ” 것 λŒ€μ‹ , 앱은 앱은 단지 νŠΉμ • νƒœμŠ€ν¬λ₯Ό μ •μ˜ν•˜κ³  μ‹œμŠ€ν…œμ΄ μˆ˜ν–‰ν•˜λ„λ‘ ν•˜λ©΄ λœλ‹€. μ‹œμŠ€ν…œμ΄ μ“°λ ˆλ“œλ₯Ό κ΄€λ¦¬ν•˜λ„λ‘ ν•¨μœΌλ‘œμ¨, 앱은 raw μ“°λ ˆλ“œμ—μ„œλŠ” λΆˆκ°€λŠ₯ν•œ μˆ˜μ€€μ˜ ν™•μž₯성을 μ–»λŠ”λ‹€. μ•± κ°œλ°œμžλŠ” κ°„λ‹¨ν•˜κ³  더 효율적인 ν”„λ‘œκ·Έλž˜λ° λͺ¨λΈ λ˜ν•œ 얻을 수 μžˆλ‹€.

λ¬Έμ„œμ˜ ꡬ성

  • Concurrency and Application Design 비동기 μ•± μ„€κ³„μ˜ κΈ°μ΄ˆμ™€ μ»€μŠ€ν…€ 비동기 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” κΈ°μˆ μ—λŒ€ν•œ μ†Œκ°œ
  • Opreation Queues Objective-C 객체λ₯Ό μ‚¬μš©ν•œ μž‘μ—…μ„ μΊ‘μŠν™”μ™€ μˆ˜ν–‰ 방법
  • Dispath Queues C 베이슀 μ•±μ—μ„œ μ–΄λ–»κ²Œ λ™μ‹œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ”μ§€
  • Dispath Sources μ‹œμŠ€ν…œ 이벀트λ₯Ό λΉ„λ™κΈ°μ μœΌλ‘œ λ‹€λ£¨λŠ” 방법
  • Migration Away from Threads μ“°λ ˆλ“œ 기반으둜 μ‘΄μž¬ν•˜λŠ” μ½”λ“œλ₯Ό μƒˆλ‘œμš΄ 기술둜 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ ν•˜λŠ” 팁과 기술 제곡

μš©μ–΄μ— λŒ€ν•œ μ°Έκ³ 

λ™μ‹œμ„±μ— λŒ€ν•œ 토둠에 λ“€μ–΄κ°€κΈ° 전에, ν˜Όλž€μ„ 막기 μœ„ν•΄ κ΄€λ ¨ μš©μ–΄μ— λŒ€ν•œ μ •μ˜κ°€ ν•„μš”ν•˜λ‹€. UNIX μ‹œμŠ€ν…œμ΄λ‚˜ 이전 OS X κΈ°μˆ μ— μ΅μˆ™ν•œ κ°œλ°œμžλ“€μ€ "task", "process", 그리고 "thread"λΌλŠ” μš©μ–΄λ₯Ό 이 λ¬Έμ„œμ—μ„œλŠ” μ‘°κΈˆμ€ λ‹€λ₯΄κ²Œ μ‚¬μš©ν•˜κ³  μžˆλ‹€λŠ” 것을 λ°œκ²¬ν•  것이닀. 이 λ¬Έμ„œλŠ” 이 μš©μ–΄λ“€μ„ μ΄λŸ°μ‹μœΌλ‘œ μ‚¬μš©ν•œλ‹€

  • threadλŠ” μ½”λ“œμ— λŒ€ν•œ λ³„λ„μ˜ μ‹€ν–‰ 경둜λ₯Ό μ–ΈκΈ‰ν•˜λŠ”λ° μ‚¬μš©λœλ‹€. OS X의 μ“°λ ˆλ“œ κ΅¬ν˜„μ€ POSIX threads APIλ₯Ό 기발으둜 ν•œλ‹€.
  • prcoessλŠ” λ©€ν‹°μ“°λ ˆλ“œλ₯Ό μ•„μš°λ₯΄λŠ” μ‹€ν–‰νŒŒμΌμ„ μ§€μΉ­ν•˜λŠ”λ° μ‚¬μš©λœλ‹€.
  • taskλŠ” μˆ˜ν–‰λ˜μ–΄μ•Ό ν•˜λŠ” μž‘μ—…μ˜ 좔상적인 κ°œλ…μ„ μ§€μΉ­ν•˜λŠ”λ° μ‚¬μš©λœλ‹€.