๐Ÿโ˜˜๏ธ๐Ÿ๐Ÿฅฌ๐Ÿฅฆ๐ŸŒณ๐ŸŒฒ

์œ ๋‹ˆํ‹ฐ/C# ๊ฐœ๋… 6

์นดํ…Œ๊ณ ๋ฆฌ ์„ค๋ช…
  • https://github.com/cherry-kiwi/CS-Async-Lecture3.git GitHub - cherry-kiwi/CS-Async-Lecture3 Contribute to cherry-kiwi/CS-Async-Lecture3 development by creating an account on GitHub. github.com https://youtu.be/bbmRUaLdqLA

  • ๋น„๋™๊ธฐ ์ทจ์†Œ: CancellationTokenSource ๋”๋ณด๊ธฐ CancellationTokenSource tokenSource; public Form1() { InitializeComponent(); } //๋น„๋™๊ธฐ ๋ฉ”์„œ๋“œ private async Task DoWorkAsync(CancellationToken token) { while (!token.IsCancellationRequested) //๋ฌดํ•œ๋ฃจํ”„ { await Task.Delay(100); //๋”œ๋ ˆ์ด int.TryParse(lblIndex.Text, out var value); lblIndex.Text = (++value).ToString(); } } private async void btnStart_Click(object sender, Eve..

  • ๋™๊ธฐ(Synchronous) ๋ฉ”์„œ๋“œ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์ฝ”๋“œ ์‹คํ–‰์ด ์ฐจ๋‹จ๋˜๋Š” ๊ฒƒ ์ž‘์—…์€ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ ํ•˜๋‚˜์˜ ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Œ ์ฝ”๋“œ //๋™๊ธฐ ๋ฉ”์„œ๋“œ private void RunAnything(Label lbl) //์•„๋ฌด๊ฑฐ๋‚˜ ์‹คํ–‰ํ•˜๋Š” ํ•จ์ˆ˜ { for (int i = 0; i < 30; i++) { Thread.Sleep(100); //์Šค๋ ˆ๋“œ๋ฅผ ์ด์šฉํ•ด ์•ฝ๊ฐ„์˜ ๋”œ๋ ˆ์ด๋ฅผ ์คŒ. ๋ฃจํ”„ 1ํšŒ๋‹น 0.1์ดˆ์˜ ๋”œ๋ ˆ์ด lbl.Text = i.ToString(); //๋ฃจํ”„ ์ธ๋ฑ์Šค๋งŒํผ ํ™”๋ฉด์ƒ์— ๋ณด์—ฌ์คŒ lbl.Refresh(); //ํ™”๋ฉด์ƒ์— ๋ณด์—ฌ์ค˜์•ผํ•จ } } //๋™๊ธฐ private void btnWalking_Click(object sender, EventArgs e) { RunAnything(l..

  • ๊ณผ๊ฑฐ c# ๋ฌธ๋ฒ•์— ์ž”์žฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ํ˜„์žฌ Action์ด๋‚˜ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ์— ๋‹ด๊ฒจ์ง„ ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ์‹คํ–‰ํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์‹คํ–‰ํ•˜์ง€ ๋ง๋ผ๋Š” ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ์ถ”๊ฐ€๋œ Invoke ํ˜•ํƒœ a?.b() ๋Š” if (a != null) { a.b(); } ํ˜น์€ a == null ? null : a.b() ์™€ ๊ฐ™์Œ action์ด๋‚˜ delegate ๊ฐ™์€ ๊ฒฝ์šฐ, action(); ๋Š” action.Invoke(); ๋ž‘ ๋™์ผํ•จ

  • https://www.notion.so/C-472fc50712ea49f8b7d2b86c0ff90f06 C# ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฐธ์กฐ www.notion.so

  • ์ฝ”๋ฃจํ‹ด ์ •์˜ Coroutines are computer program components that generalize subroutines for non-preemptive multitasking, by allowing execution to be suspended and resumed. ์‹คํ–‰์˜ ์ง€์—ฐ๊ณผ ์žฌ๊ฐœ๋ฅผ ํ—ˆ์šฉํ•จ์œผ๋กœ์„œ, ๋น„ ์„ ์ ์  ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น์„ ์œ„ํ•œ ์„œ๋ธŒ๋ฃจํ‹ด์„ ์ผ๋ฐ˜ํ™”ํ•œ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์„ฑ์š”์†Œ ์„ค๋ช… ๋ณ‘ํ–‰์„ฑ, ๋™์‹œ์„ฑ(Concurrency) ๋ณ‘๋ ฌ์„ฑ(Parallelism) ๋น„ ์„ ์ ์  ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น (Non-preemptive multitasking) CPU๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š” ์“ฐ๋ ˆ๋“œ๊ฐ€ CPU ์—ฐ์‚ฐ์ด ํ•„์š”์—†์Œ์„ ๋‚˜ํƒ€๋ƒˆ์„ ๋•Œ, ์šด์˜์ฒด์ œ๊ฐ€ ํšŒ์ˆ˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ โญ•๏ธ โŒ ์„ ์ ํ˜• ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น (Preemptive multit..