asyncgo v0.1.0

https://github.com/myyrakle/asyncgo/releases/tag/v0.1.0
๋น„๋™๊ธฐ ์ฝ”๋“œ ์ง ๋‹ค๊ณ  ๊ณ ๋ฃจํ‹ด๋งŒ ๋งˆ๊ตฌ ์‹ธ์ง€๋ฅด๋‹ค๋ณด๋ฉด ๊ฐœํŒ์ด ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์„œ async/await์˜ ์ด๋””์—„์„ ์ ์šฉํ•œ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ๋ฅผ ์ข€ ๋งŒ๋“ค์–ด๋ดค๋‹ค.

์ผ๋‹จ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ํƒœ์Šคํฌ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.

Await์„ ํ†ตํ•ด์„œ ํƒœ์Šคํฌ๊ฐ€ ๋๋‚ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๊ณ  ๊ทธ ๋ฐ˜ํ™˜๊ฐ’์„ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค.


๊ทธ๋ฆฌ๊ณ  ํŒŒ๋ผ๋ฏธํ„ฐ๋„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
์ด 2๊ฐ€์ง€๋ฅผ ์‘์šฉํ•˜๋ฉด ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•ด์„œ ๊ฐ€์‹œ์„ฑ์„ ํฌ๊ฒŒ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

๋˜ ๊ณ ๋ฃจํ‹ด์„ ๋‚จ๋ฐœํ• ๋•Œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์ ์€, ํŒจ๋‹‰์ด ๋ฐœ์ƒํ• ๋•Œ ๋ญ ๋Œ€์‘์„ ํ•˜์ง€๋ฅผ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
๊ฐ€์šฉ์„ฑ์„ ์œ„ํ•ด์„œ๋Š” ๊ณ ๋ฃจํ‹ด ๋œฐ๋•Œ๋งˆ๋‹ค ๋ฆฌ์ปค๋ฒ„ ๋‹ฌ์•„์ฃผ๋Š”๊ฒŒ ์ข‹์€๋ฐ, ๊ทธ๊ฒƒ๋„ ์ƒ๋‹นํžˆ ๊ท€์ฐฎ์€ ์ผ์ด๋‹ค.
RunPanicableTask๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŒจ๋‹‰-safeํ•˜๊ฒŒ ํƒœ์Šคํฌ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

ํŒจ๋‹‰์ด ๋ฐœ์ƒํ•˜๋ฉด Result ํƒ€์ž…์„ ํ†ตํ•ด ์˜ค๋ฅ˜ ์ •๋ณด๋ฅผ ์ „ํŒŒํ•ด์ค€๋‹ค.
์ด๊ฒƒ ๋•Œ๋ฌธ์— RunPanicableTask์€ ์ฝœ๋ฐฑ์˜ ๋ฆฌํ„ดํƒ€์ž…์ด Result[T]๋กœ ๊ณ ์ •์ด๋‹ค.

์—ฌ๋Ÿฌ๊ฐœ์˜ Task๋“ค์„ ์™„๋ฃŒ์‹œ๊ฐ„ ๊ด€๊ณ„์—†์ด ๋™์‹œ์— Awaitํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, JoinAll๋กœ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋…ผ๋ฆฌ๋‚˜ ์ด๋””์—„์ด๋ผ์„œ nodejs, rust ๊ฐ™์€ ์–ธ์–ด๋“ค์„ ์‚ฌ์šฉํ•ด๋ณธ ๊ฒฝํ—˜์ด ์žˆ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ์‘์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.