Skip to content

๐Ÿ›Swift Concurrency์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๊ณผ ๊ธฐ์ˆ ์„ ์‹คํ—˜ํ•˜๊ณ  ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•œ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ

Notifications You must be signed in to change notification settings

rlarjsdn3/Swift-Concurrency-Playground

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

26 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Swift Concurrency Playground

๐Ÿ’ก Note: ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋œ ๋ฌธ์„œ๋ฅผ ๋ณด์‹œ๋ ค๋ฉด ์—ฌ๊ธฐ๋ฅผ ํด๋ฆญํ•˜์„ธ์š”.

๐Ÿ›Swift Concurrency์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๊ณผ ๊ธฐ์ˆ ์„ ์‹คํ—˜ํ•˜๊ณ  ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•œ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ์ž…๋‹ˆ๋‹ค.

๐Ÿ•Š๏ธ Programming Guide

  • Task
    ๋น„๋™๊ธฐ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ณ  ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.
  • Detached Task
    ๋น„๋™๊ธฐ ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ณ  ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ๋‹จ, ๊ธฐ์กด ์ปจํ…์ŠคํŠธ์™€๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • async/await
    ๋น„๋™๊ธฐ ์ฝ”๋“œ ์ž‘์„ฑ์„ ๋™๊ธฐ ์ฝ”๋“œ์ฒ˜๋Ÿผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” Swift์˜ ๋ฌธ๋ฒ•์ž…๋‹ˆ๋‹ค.
  • async-let
    ์—ฌ๋Ÿฌ ๋น„๋™๊ธฐ ์ž‘์—…์„ ๋™์‹œ์— ์‹œ์ž‘ํ•˜๊ณ  ๋‚˜์ค‘์— ๊ฒฐ๊ณผ๋ฅผ ๋ณ‘๋ ฌ๋กœ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ฐ„ํŽธํ•œ ๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • TaskGroup
    ์—ฌ๋Ÿฌ ๋น„๋™๊ธฐ ์ž‘์—…์„ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์‰ฝ๊ฒŒ ๋ชจ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
  • Continuation
    ๊ธฐ์กด์˜ ์ฝœ๋ฐฑ ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ์ฝ”๋“œ๋ฅผ async/await ์Šคํƒ€์ผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ธŒ๋ฆฟ์ง€ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
  • Cancellation
    ์‹คํ–‰ ์ค‘์ธ ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ทจ์†Œํ•˜๋Š” ํ˜‘๋ ฅ์  ์ทจ์†Œ(Cooperative Cancellation)๋ฅผ ์•Œ์•„๋ด…์‹œ๋‹ค.
  • Task-Local
    ํŠน์ • Task ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์ง€์—ญ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค.
  • Sendable
    ๋™์‹œ์„ฑ ํ™˜๊ฒฝ์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์ž„์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.
  • AsyncSequence
    (๋‚ด์šฉ)
  • AsyncStream
    (๋‚ด์šฉ)
  • Actor (Syntax Rules)
    ๋™์‹œ์„ฑ ๋ฌธ์ œ๋ฅผ ์›์ฒœ์ ์œผ๋กœ ์ฐจ๋‹จํ•˜๋Š” ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ์•Œ์•„๋ด…์‹œ๋‹ค.

๐Ÿ“š Appendix

  • New Concurrency Syntax
    ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋œ ๋™์‹œ์„ฑ ๋ฌธ๋ฒ•์„ ์•Œ์•„๋ด…์‹œ๋‹ค.
  • Structured vs.Unstructured Concurrency
    ๊ตฌ์กฐ์  ๋™์‹œ์„ฑ๊ณผ ๊ตฌ์กฐํ™”๋˜์ง€ ์•Š์€ ๋™์‹œ์„ฑ์˜ ์ฐจ์ด๋ฅผ ์•Œ์•„๋ด…์‹œ๋‹ค.

๐Ÿ’พ Sample Projects

  • Image
    ์ปฌ๋ ‰์…˜ ๋ทฐ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ , ์ทจ์†Œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด…์‹œ๋‹ค. ์•กํ„ฐ๋ฅผ ํ™œ์šฉํ•ด ์บ์‹œ์— ์•ˆ์ „ํ•˜๊ฒŒ ์ ‘๊ทผํ•˜๊ณ , ์•กํ„ฐ์˜ ์žฌ์ง„์ž…์„ฑ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๋ด…์‹œ๋‹ค.
  • Map
    ๊ธฐ์กด ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ๋ฐฉ์‹์˜ API๋ฅผ async/await์œผ๋กœ ๋ณ€ํ™˜ํ•ด ๋ด…์‹œ๋‹ค.
  • FileCompressor
    ์•กํ„ฐ ๊ฒฝํ•ฉ(Actor Contention)์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ์ตœ์ ํ™”ํ•ด๋ด…์‹œ๋‹ค.
  • LocationApp
    AsyncStream์„ ํ™œ์šฉํ•ด ์œ„์น˜ ์ •๋ณด๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ง€์†์ ์œผ๋กœ ๋ฐ›์•„์˜ค๋Š” ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•ด๋ด…์‹œ๋‹ค.

About

๐Ÿ›Swift Concurrency์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๊ณผ ๊ธฐ์ˆ ์„ ์‹คํ—˜ํ•˜๊ณ  ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•œ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages