μ΅œλŒ€ 1 λΆ„ μ†Œμš”

λ©€ν‹°ν”Œλ ‰μ‹± 기반의 μ„œλ²„

λ©€ν‹° ν”„λ‘œμ„ΈμŠ€ μ„œλ²„μ˜ 단점

  • ν”„λ‘œμ„ΈμŠ€μ˜ λΉˆλ²ˆν•œ 생성 -> μ„±λŠ₯ μ €ν•˜
  • λ©€ν‹° ν”„λ‘œμ„ΈμŠ€μ˜ 흐름을 κ³ λ €ν•˜μ—¬ κ΅¬ν˜„ν•΄μ•Όν•˜κΈ°μ— κ΅¬ν˜„μ΄ 어렀움
  • ν”„λ‘œμ„ΈμŠ€κ°„ 톡신이 ν•„μš”ν•œ μƒν™©μ—μ„œλŠ” μ„œλ²„μ˜ κ΅¬ν˜„μ΄ 더 볡작

λ©€ν‹° ν”„λ‘œμ„ΈμŠ€ μ„œλ²„μ˜ λŒ€μ•ˆ

ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€μ—μ„œ λ‹€μˆ˜μ˜ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ„œλΉ„μŠ€ν•  수 μžˆμ–΄μ•Όν•¨

ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ μ—¬λŸ¬ 개의 μ†ŒμΌ“μ„ 핸듀링

ν•˜λ‚˜μ˜ λ¦¬μ†ŒμŠ€λ₯Ό λ‘˜ μ΄μƒμ˜ μ˜μ—­μ—μ„œ 곡유

IO λ©€ν‹°ν”Œλ ‰μ‹±



λ©€ν‹° ν”„λ‘œμ„ΈμŠ€

IO λ©€ν‹°ν”Œλ ‰μ‹±



select ν•¨μˆ˜μ˜ 이해와 μ„œλ²„ κ΅¬ν˜„

select ν•¨μˆ˜μ˜ μž‘λ™ 흐름

  1. 관심 λŒ€μƒ λͺ©λ‘ λ§Œλ“€κΈ°, 관심 μ†ŒμΌ“ 등둝 (fd_set μ΄ˆκΈ°ν™”)
    • 파일 λ””μŠ€ν¬λ¦½ν„°μ˜ μ„€μ •
      • λ””μŠ€ν¬λ¦½ν„° 1 = κ΄€μ°° λŒ€μƒμœΌλ‘œ μΆ”κ°€
      • λ””μŠ€ν¬λ¦½ν„° 0 = κ΄€μ°° λŒ€μƒμ—μ„œ μ œμ™Έ
    • κ²€μ‚¬μ˜ λ²”μœ„ μ„€μ •
    • νƒ€μž„ μ•„μ›ƒμ˜ μ„€μ •
int select(
    int maxfd, fd_set *readset, fd_set *writeset, fd_set *exceptset, const struct timeval *timeout
)

// maxfd : κ΄€μ°° λŒ€μƒμ΄ λ˜λŠ” λ””μŠ€ν¬λ¦½ν„°μ˜ 수
// timeout의 지정을 톡해 무쑰건 λ°˜ν™˜μ΄ λ˜λŠ” μ‹œκ°„ κ²°μ • κ°€λŠ₯
  1. select ν•¨μˆ˜μ˜ 호좜
    • λ³€ν™”κ°€ λ°œμƒν•œ μ†ŒμΌ“μ˜ λ””μŠ€ν¬λ¦½ν„° 1 , λ‚˜λ¨Έμ§€λŠ” 0
  2. λ³€ν™” λ°œμƒν•œ μ†ŒμΌ“λ§Œ read, write

νŠΉμ§•

  1. νƒ€μž„ 아웃 μ„€μ • κ°€λŠ₯
  2. λ¦¬μŠ€λ‹ μ†ŒμΌ“ λ˜ν•œ κ΄€μ°°μ˜ λŒ€μƒ (μ—°κ²° μš”μ²­ λ˜ν•œ λ°μ΄ν„°μ˜ μˆ˜μ‹ μœΌλ‘œ ꡬ뢄)
  3. νƒ€μž„μ•„μ›ƒμ— μ˜ν•œ λ°˜ν™˜μ΄λΌλ©΄ λ‹€μ‹œ select() 호좜 -> breakλ¬Έ μ‹€ν–‰
  4. 이벀트 λ°œμƒ μ‹œ 이벀트λ₯Ό μ°ΎκΈ°μœ„ν•΄ 반볡문 ꡬ성 -> select의 단점

νƒœκ·Έ:

μΉ΄ν…Œκ³ λ¦¬:

μ—…λ°μ΄νŠΈ: