рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рддрдп рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдШрдЯрдирд╛рдУрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рд╣рдо рдХрд┐рд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдЕрдЪреНрдЫрд╛ рдФрд░ рдмреБрд░рд╛ рд╣реИред рд╕рд╣реА рддрд░реАрдХрд╛ рдЪреБрдирдирд╛ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ:
- рдЪрдпрди рдХрд░реЗрдВ ()
- рдкреЛрд▓ ()
- рдПрдкреЛрд▓ ()
- libevent
рдЪрдпрди () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдкреБрд░рд╛рдиреЗ, рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдХрдард┐рди рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЪрдпрди рдкрд░ рд╕рд┐рджреНрдз () рдЙрди рджрд┐рдиреЛрдВ рдореЗрдВ рд╡рд╛рдкрд╕ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрдм "рд╕реЙрдХреЗрдЯреНрд╕" рдХреЛ "
рдмрд░реНрдХрд▓реЗ рд╕реЙрдХреЗрдЯреНрд╕ " рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ред рдпрд╣ рд╡рд┐рдзрд┐ рдЙрди рдмрд░реНрдХрд▓реЗ рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рдкрд╣рд▓реЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдереА, рдХреНрдпреЛрдВрдХрд┐ рдЙрди рджрд┐рдиреЛрдВ рдореЗрдВ рдЧреИрд░-рдЕрд╡рд░реЛрдзрдХ I / O рдХреА рдХреЛрдИ рдЕрд╡рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ рдереАред рд▓реЗрдХрд┐рди рдХрд╣реАрдВ рди рдХрд╣реАрдВ 80 рдХреЗ рджрд╢рдХ рдореЗрдВ рд╡рд╣ рджрд┐рдЦрд╛рдИ рджреА, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде () рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рддрдм рд╕реЗ, рдЗрд╕рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдХреБрдЫ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред
рдЪрдпрди () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрдИ fd_set рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдФрд░ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдореЙрдирд┐рдЯрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдлрд┐рд░ select () рдХреЙрд▓ рдХрд░реЗрдВред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
fd_set fd_in, fd_out; struct timeval tv;
рдЬрдм рдЪрдпрди () рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдХрд┐рд╕реА рдХреЛ рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереА рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЪрдпрди () рдореЗрдВ рдХрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рдРрд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд░рд╛рдм рд░реВрдк рд╕реЗ рдЕрдиреБрдХреВрд▓ рдмрдирд╛рддреА рд╣реИрдВред рдореБрдЦреНрдп рд╣реИрдВ:
- рдЪрдпрди рдЗрд╕рдХреЗ рд▓рд┐рдП рджрд┐рдП рдЧрдП fd_sets рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рднреА рдкреБрди: рдЙрдкрдпреЛрдЧ рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЕрдзрд┐рдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ), рддреЛ fd_sets рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдкреБрди: рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдареАрдХ рд╣реИ, рдпрд╛ FD_COPY рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╕рд╣реЗрдЬреЗ рдЧрдП рдмреИрдХрдЕрдк рд╕реЗ рдХреЙрдкреА рдХрд░реЗрдВред рдФрд░ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдЪрдпрди рдХреЙрд▓ рд╕реЗ рдкрд╣рд▓реЗ рдмрд╛рд░-рдмрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
- рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рд╕ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдиреЗ рдИрд╡реЗрдВрдЯ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЙрди рд╕рднреА рдХреЛ FD_ISSET рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЪреБрдирдирд╛ рд╣реЛрдЧрд╛ред рдЬрдм рдЖрдк 2000 рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдШрдЯрдирд╛ рдХреЗрд╡рд▓ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд▓рд┐рдП рд╣реБрдИ (рдЬреЛ рдХрд┐ рдорддрд▓рдмреА рдХрд╛рдиреВрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕реВрдЪреА рдореЗрдВ рдЕрдВрддрд┐рдо рд╣реЛрдЧреА) - рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░ рджреЗрдВрдЧреЗред
- рдХреНрдпрд╛ рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл реирежрежреж рд╡рд░реНрдгрдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ? рдореИрдВ рдЗрд╕реЗ рд▓реЗрдХрд░ рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реЛ рдЧрдпрд╛ред рдЪрдпрди рдЙрддрдирд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо, рдирд┐рдпрдорд┐рдд рд▓рд┐рдирдХреНрд╕ рдкрд░, рд╕рд╛рдорд╛рдиреНрдп рдХрд░реНрдиреЗрд▓ рдХреЗ рд╕рд╛рдеред рдПрдХ рд╕рд╛рде рджреЗрдЦреЗ рдЧрдП рд╡рд░реНрдгрдирдХрд░реНрддрд╛рдУрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░рдВрддрд░ FD_SETSIZE рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИ, рдЬреЛ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ 1024 рдХреЗ рд▓рдЧрднрдЧ рдмрд░рд╛рдмрд░ рд╣реИред рдХреБрдЫ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЖрдкрдХреЛ sys / select.h рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ FD_SETSIZE рдорд╛рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдХреЗ рд╣реИрдХ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣реИрдХ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдирдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИред рд╡рд╣реА рд▓рд┐рдирдХреНрд╕ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдЧрд╛ред
- рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдереНрд░реЗрдб рд╕реЗ рдЕрд╡рд▓реЛрдХрдиреАрдп рд╕реЗрдЯ рд╕реЗ рд╡рд░реНрдгрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдзрд╛рдЧреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВред рддреЛ рдпрд╣ рд╢реБрд░реВ рд╣реБрдЖ рдФрд░ рдЗрд╕рдХреЗ рдЪрдпрди () рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рдзрд╛рдЧрд╛ рд╣реИ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕рдордЧреНрд░ рднрд╛рд░ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдм рдЙрд╕рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ sock1 рд╕реЙрдХреЗрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд╣реАрдВ рдЖрдпрд╛ рд╣реИ рдФрд░ рдХрдиреЗрдХреНрд╢рди рдХреЛ рддреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдордп рдерд╛ред рдЪреВрдВрдХрд┐ рдирдП рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реЙрдХреЗрдЯ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдкрд╣рд▓рд╛ рд╕реВрддреНрд░ рдЕрднреА рдЗрд╕ рд╡рд┐рд╡рд░рдгрдХ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдУрд╣, рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ: "рдпрджрд┐ рдЪрдпрди рдХреЗ рд╕рд╛рде рдордирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИрдВрдбрд▓ () рдХрд┐рд╕реА рдЕрдиреНрдп рдереНрд░реЗрдб рджреНрд╡рд╛рд░рд╛ рдмрдВрдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдорд┐рд▓реЗрдЧрд╛ред"
- Sock1 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреБрдЫ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рд╣рдо рддрдм рддрдХ рдХреБрдЫ рдирд╣реАрдВ рднреЗрдЬреЗрдВрдЧреЗ рдЬрдм рддрдХ рдХрд┐ рд╕рд┐рд▓реЗрдХреНрдЯ рдЕрдкрдирд╛ рдХрд╛рдо рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░ рд▓реЗрддрд╛ред
- рдЙрди рдШрдЯрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдореЙрдирд┐рдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╛рдлреА рд╕реАрдорд┐рдд рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд░рд┐рдореЛрдЯ рд╕реЙрдХреЗрдЯ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЙрд╕ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ (рдмрдВрдж рд╕реЙрдХреЗрдЯ рдХреЗ рд▓рд┐рдП 0 рд▓реМрдЯреЗрдЧрд╛ рдкрдврд╝реЗрдВ)ред рд╕реЙрдХреЗрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рддреЗ рд╕рдордп рдЗрд╕реЗ рдЕрднреА рднреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (0 рдкрдврд╝реЗрдВ - рд╕реЙрдХреЗрдЯ рдмрдВрдж рд╣реИ), рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЗрд╕ рд╕рдордп рд╣рдорд╛рд░рд╛ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдп рдЗрд╕ рд╕реЙрдХреЗрдЯ рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬрдирд╛ рд╣реИ рдФрд░ рдЕрдм рдЗрд╕рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ?
- рдЪреБрдирд┐рдВрджрд╛ "рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╡рд┐рд╡рд░рдгрдХ" рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдФрд░ рдПрдХ рдЕрд▓рдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдкрд░ рдПрдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдмреЛрдЭ рдбрд╛рд▓рддрд╛ рд╣реИ
рдмреЗрд╢рдХ, рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛрдИ рдЦрдмрд░ рдирд╣реАрдВ рд╣реИред рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкрддрд╛ рд╣реИ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдХреЛ рдкреЛрд▓ рд╡рд┐рдзрд┐ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╕рдордп рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдЖрдк рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдкреНрд░рд╛рдЪреАрди рдЗрддрд┐рд╣рд╛рд╕ рдХрд╛ рдЕрдзреНрдпрдпрди рдХреНрдпреЛрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдХреНрдпрд╛ рдЖрдЬ рдкреНрд░рд╛рдЪреАрди рдЪрдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХрд╛рд░рдг рд╣реИрдВ? рд╣рд╛рдВ, рджреЛ рдРрд╕реЗ рдХрд╛рд░рдг рд╣реИрдВред рдЗрд╕ рддрдереНрдп рдкрд░ рдирд╣реАрдВ рдХрд┐ рд╡реЗ рдХреБрдЫ рд╕рдордп рдореЗрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдкрддрд╛ред
рдкрд╣рд▓рд╛ рдХрд╛рд░рдг рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рд╣реИред рдЪрдпрди () рдПрдХ рд▓рд╛рдЦ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╣реИред рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рдЬрдВрдЧрд▓ рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рд╛рддреЗ рд╣реИрдВ, рдЕрдЧрд░ рд╡рд╣рд╛рдВ рдХреЛрдИ рдиреЗрдЯрд╡рд░реНрдХ рд╣реИ, рддреЛ рдЪрдпрди рд╣реЛрдЧрд╛ред рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЪрдпрди рдХреА рд▓рдЧрднрдЧ рдЧрд╛рд░рдВрдЯреА рд╣реЛрдЧреАред рдФрд░ рдпрд╣ рдордд рд╕реЛрдЪрд┐рдП рдХрд┐ рдореИрдВ рдЕрдм рдЕрдзреАрд░рддрд╛ рдореЗрдВ рдЧрд┐рд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдкрдВрдЪ рдХрд╛рд░реНрдб рдФрд░ рдИрдПрдирдПрд╕реА рдЬреИрд╕реЗ рдХреБрдЫ рдХреЛ рдпрд╛рдж рдХрд░рддрд╛ рд╣реВрдВ, рдирд╣реАрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдВрдбреЛрдЬ рдПрдХреНрд╕рдкреА рдореЗрдВ рдХреЛрдИ рдФрд░ рдЖрдзреБрдирд┐рдХ рдкреЛрд▓ рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди select рд╣реИред
рджреВрд╕рд░рд╛ рдХрд╛рд░рдг рдЕрдзрд┐рдХ рд╡рд┐рджреЗрд╢реА рд╣реИ рдФрд░ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдХрд┐ рдЪреБрдирд┐рдВрджрд╛ (рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ) рдПрдХ рдиреИрдиреЛрд╕реЗрдХрдВрдб (рдпрджрд┐ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ) рдХреЗ рдЖрджреЗрд╢ рдХреЗ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдкреЛрд▓ рдФрд░ рдПрдкреЛрд▓ рдХреЗрд╡рд▓ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╕рдЯреАрдХрддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕рд╛рдзрд╛рд░рдг рдбреЗрд╕реНрдХрдЯреЙрдк (рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рд░реНрд╡рд░) рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рднреВрдорд┐рдХрд╛ рдирд╣реАрдВ рдирд┐рднрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдиреИрдиреЛрд╕реЗрдХрдВрдб рд╕рдЯреАрдХрддрд╛ рдЯрд╛рдЗрдорд░ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЕрднреА рднреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд░рд┐рдпрд▓-рдЯрд╛рдЗрдо рд╕рд┐рд╕реНрдЯрдо рд╣реИрдВ рдЬрд┐рдирдХреА рдРрд╕реА рдЯрд╛рдЗрдорд░ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрд╕реЗ рднреАрдЦ рдорд╛рдБрдЧрддрд╛ рд╣реВрдБ, рдЬрдм рдЖрдк рдПрдХ рдкрд░рдорд╛рдгреБ рд░рд┐рдПрдХреНрдЯрд░ рдпрд╛ рд░реЙрдХреЗрдЯ рдХрд╛ рдлрд░реНрдорд╡реЗрдпрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ - рдиреИрдиреЛрдХреИрдиреНрдбреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдордп рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рдордд рдмрдиреЛред рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдореИрдВ рдЬреАрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдорд╛рдорд▓рд╛ рд╢рд╛рдпрдж рдПрдХрдорд╛рддреНрд░ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ (рдХреЗрд╡рд▓ рдЪрдпрди рдЙрдкрдпреБрдХреНрдд рд╣реИ)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рд╕рд╛рдзрд╛рд░рдг рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЖрд╡реЗрджрди рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕реЙрдХреЗрдЯреНрд╕ (рджрд╕рд┐рдпреЛрдВ, рд╕реИрдХрдбрд╝реЛрдВ - рдФрд░ рдЕрдзрд┐рдХ рдирд╣реАрдВ) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рддреЛ рдкреЛрд▓ рдФрд░ рдЪреБрдирд┐рдВрджрд╛ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЕрдВрддрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рдЕрдиреНрдп рдХрд╛рд░рдХреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдЧрд╛ред
рдорддрджрд╛рди рдХреЗ рд╕рд╛рде ()
рдкреЛрд▓ рдкреЛрд▓рд┐рдВрдЧ рд╕реЙрдХреЗрдЯреНрд╕ рдХреА рдПрдХ рдирдИ рд╡рд┐рдзрд┐ рд╣реИ, рдЬрд┐рд╕реЗ рддрдм рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдЬрдм рд▓реЛрдЧреЛрдВ рдиреЗ рдмрдбрд╝реЗ рдФрд░ рднрд╛рд░реА рд▓реЛрдб рд╡рд╛рд▓реА рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рд╢реБрд░реВ рдХреАред рдпрд╣ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЪреБрдирд┐рдВрджрд╛ рд╡рд┐рдзрд┐ рдХреА рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрдорд┐рдпреЛрдВ рд╕реЗ рдЧреНрд░рд╕реНрдд рдирд╣реАрдВ рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдзреБрдирд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрддреЗ рд╕рдордп, рдЖрдк рдкреЛрд▓ рдФрд░ рдПрдкреЛрд▓ / рд▓рд┐рдмрд╡реЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░реЗрдВрдЧреЗред
рдорддрджрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдкрд░реНрдпрд╡реЗрдХреНрд╖рд┐рдд рд╡рд┐рд╡рд░рдгрдХреЛрдВ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкреЛрд▓рдлреЗрдб рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдкреЛрд▓ () рдХрд╣рддреЗ рд╣реИрдВред
рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рдЪреБрдирд┐рдВрджрд╛ рд╡рд┐рдзрд┐ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд▓ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдирд┐рдХрд▓рд╛:
- рджреЗрдЦреЗ рдЧрдП рд╡рд┐рд╡рд░рдгрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИ, 1024 рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ
- рдкреЛрд▓рдлреЗрдб рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдХреЙрд▓ (рдкреЛрд▓) рдХреЗ рдмреАрдЪ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ - (рдЖрдкрдХреЛ рдмрд╕ рд░рд┐рд╡рд╛рдЗрдВрдб рдлрд╝реАрд▓реНрдб рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
- рдЕрд╡рд▓реЛрдХрди рдХреА рдЧрдИ рдШрдЯрдирд╛рдПрдВ рдмреЗрд╣рддрд░ рд╕рдВрд░рдЪрд┐рдд рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реЙрдХреЗрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рджреВрд░рд╕реНрде рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдкреЛрд▓ рд╡рд┐рдзрд┐ рдХреА рдХрдорд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереА: рдпрд╣ рдХреБрдЫ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдПрдХреНрд╕рдкреАред рд╡рд┐рд╕реНрдЯрд╛ рдХреЗ рдмрд╛рдж рд╕реЗ, рдпрд╣ рдореМрдЬреВрдж рд╣реИ, рд▓реЗрдХрд┐рди WSAPoll рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рдорд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рдЗрдВрдбрд┐рдкреЗрдВрдбреЗрдВрдЯ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЖрдк рдПрдХ рдУрд╡рд░рд░рд╛рдЗрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ:
#if defined (WIN32) static inline int poll( struct pollfd *pfd, int nfds, int timeout) { return WSAPoll ( pfd, nfds, timeout ); } #endif
рдЦреИрд░, рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреА рд╕рдЯреАрдХрддрд╛ 1 рдПрдордПрд╕ рд╣реИ, рдЬреЛ рдмрд╣реБрдд рдХрдо рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧреАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреЛрд▓ рдХреЗ рдЕрдиреНрдп рдиреБрдХрд╕рд╛рди рд╣реИрдВ:
- рдЬреИрд╕рд╛ рдХрд┐ рдЪрдпрди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рд╡рд░реНрдгрдХ рд╕рднреА рдордирд╛рдпрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреВрд░реНрдг рдкрд╛рд╕ рдХреЗ рдмрд┐рдирд╛ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд░рд┐рд╡рд╛рдЗрдЬ рдлрд╝реАрд▓реНрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░, рдпрд╣ рдУрдПрд╕ рдХреЗ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рдЪрдпрди рдХреЗ рд╕рд╛рде, рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЕрд╡рд▓реЛрдХрди рд╕реЗрдЯ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЧреНрд░рд╛рд╣рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдорд╣рддреНрд╡рд╣реАрди рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдкрд╡рд╛рдж рд╢рд╛рдпрдж рдХреЗрд╡рд▓ рдкреА 2 рдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣рдЬрд╛рд░реЛрдВ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд░реНрд╡рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рднреА рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдм рддрдХ рдХрд┐ рдКрдкрд░ рдХреЗ рджреЛ рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЖрдкрдХреЛ рд╕реАрдорд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛, рддрдм рддрдХ рдЪреБрдирд╛рд╡ рдЖрдкрдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ рдпреБрдЧ (рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рднреА рдорддрджрд╛рди рдмреЗрд╣рддрд░ рд╣реИ:
- рдЖрдк рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдПрдкреЛрд▓ рдХреЗрд╡рд▓ рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╣реИ)
- рдЖрдкрдХреЛ 1000 рд╕реЗ рдЕрдзрд┐рдХ рд╕реЙрдХреЗрдЯ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реЛрдЧрд╛)
- рдЖрдкрдХреЛ 1000 рд╕реЗ рдЕрдзрд┐рдХ рд╕реЙрдХреЗрдЯреНрд╕ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХрд╛ рд╕рдордп рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ (рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЪреБрдирд╛рд╡ рдФрд░ рдПрдкреЛрд▓ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдмрд╣реБрдд рдХрд░реАрдм рд╣реЛрдЧрд╛ - рдПрдкреЛрд▓ рдореЗрдВ рдХрдо рдШрдЯрдирд╛рдУрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рд╕реЗ рд▓рд╛рдн рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рдиреЗ / рд╣рдЯрд╛рдиреЗ рдХреЗ рдУрд╡рд░рд╣реЗрдб рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)
- рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рдзрд╛рдЧреЗ рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрдмрдХрд┐ рджреВрд╕рд░рд╛ рдЙрдирдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ (рдпрд╛ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)
рдорддрджрд╛рди рдХреЗ рд╕рд╛рде ()
рдПрдкреЛрд▓ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдирдпрд╛ рдФрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ (рдФрд░ рдХреЗрд╡рд▓ рд▓рд┐рдирдХреНрд╕ рдкрд░)ред рдареАрдХ рд╣реИ, рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ "рд╕рдмрд╕реЗ рдирдпрд╛" рдПрдХ рдкреНрд░рддреНрдпрдХреНрд╖ рд╣реИ - рдпрд╣ 2002 рд╕реЗ рдореВрд▓ рдореЗрдВ рд╣реИред рдпрд╣ рдорддрджрд╛рди рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЪрдпрдирд┐рдд рд╡рд░реНрдгрдХреЛрдВ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдЬреЛрдбрд╝рдиреЗ / рд╣рдЯрд╛рдиреЗ / рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдПрдкреЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рдЧрд╣рди рддреИрдпрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЪрд╛рд╣рд┐рдП:
- Epoll_create рдХреЙрд▓ рдХрд░рдХреЗ рдПрдХ epoll рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдмрдирд╛рдПрдВ
- рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдирд╛рдУрдВ рдФрд░ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде epoll_event рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЖрд░рдореНрдн рдХрд░реЗрдВред рдпрд╣рд╛рдВ "рд╕рдВрджрд░реНрдн" рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдПрдкреЛрд▓ рдмрд╕ рдЙрд╕ рдорд╛рди рдХреЛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рдЧреБрдЬрд░рддрд╛ рд╣реИ
- рд╡реЗрдзрд╢рд╛рд▓рд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдПрдХ рд╣реИрдВрдбрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП epoll_ctl (... EPOLL_CTL_ADD) рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ
- рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░реЗрдВ epoll_wait () рд╣рдо рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдПрдХ рд╕рдордп рдореЗрдВ рдХрд┐рддрдиреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 20)ред рдкрд┐рдЫрд▓реЗ рддрд░реАрдХреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╣рдо рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрдирдкреБрдЯ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдирд╣реАрдВред рдпрджрд┐ рд╣рдо 200 рд╡рд┐рд╡рд░рдгрдХреЛрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ 5 рдХреЛ рдирдпрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рд╣реИ - epoll_wait рдХреЗрд╡рд▓ 5 рдИрд╡реЗрдВрдЯ рд▓реМрдЯрд╛рдПрдЧрд╛ред рдЕрдЧрд░ 50 рдШрдЯрдирд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ 20 рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдБрдЧреЗ, рдФрд░ рд╢реЗрд╖ 30 рдЕрдЧрд▓реА рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ, рд╡реЗ рдЦреЛ рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗ
- рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рдШрдЯрдирд╛рдУрдВред рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рддреНрд╡рд░рд┐рдд рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЙрди рд╡рд┐рд╡рд░рдгрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖ
рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рдЖрдЗрдП рдПрдкреЛрд▓ рдХреЗ рджреЛрд╖реЛрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ - рд╡реЗ рдХреЛрдб рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рдЕрдзрд┐рдХ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
рд▓рд╛рдн рднреА рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ:
- epoll рдХреЗрд╡рд▓ рдЙрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЗрдЦреА рдЧрдИ рдШрдЯрдирд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВред рдЖрдкрдХреЛ рдПрдХ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╕рдВрднрд╡рддрдГ рд╡рд╣ рд╣реИ рдЬрд╣рд╛рдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рдШрдЯрдирд╛ рдХрд╛рдо рдХреА рд╣реИред
- рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рджреЗрдЦреЗ рдЧрдП рдШрдЯрдирд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рд╛рд░реНрдердХ рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ - рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдЦреЛрдЬ рдорд┐рд▓реАред
- рдЖрдк рдХрд┐рд╕реА рднреА рд╕рдордп рд╕реВрдЪреА рд╕реЗ рд╕реЙрдХреЗрдЯ рдЬреЛрдбрд╝ рдпрд╛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рддреБрдо рднреА рдордирд╛рдпрд╛ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдпрд╣ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИред
- рдЖрдк epoll_wait рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рдХрддрд╛рд░ рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ рдХрдИ рдереНрд░реЗрдб рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЪрдпрди / рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдпрд╣ рднреА рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдПрдкреЛрд▓ "рдСрд▓-рдЖрдЙрдЯ рдмреЗрд╣рддрд░ рдкреЛрд▓ рдирд╣реАрдВ рд╣реИред" рдорддрджрд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕рдХреЗ рдиреБрдХрд╕рд╛рди рд╣реИрдВ:
- рдИрд╡реЗрдВрдЯ рдлреНрд▓реИрдЧ рдХреЛ рдмрджрд▓рдирд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, READ рд╕реЗ WRITE рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛) рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдкреЛрд▓_рд╕реАрдЯреАрдПрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрдмрдХрд┐ рдкреЛрд▓ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рд┐рд░реНрдл рдмрд┐рдЯрдорд╛рд╕реНрдХ (рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдб рдореЗрдВ) рдмрджрд▓рддреЗ рд╣реИрдВред рдкрдврд╝рдиреЗ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП 5,000 рд╕реЙрдХреЗрдЯ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреЛрд▓ рдХреЗ рд▓рд┐рдП 5,000 рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдФрд░ рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬрдмрдХрд┐ рдкреЛрд▓ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рд▓реВрдк рдореЗрдВ рдПрдХ рддреБрдЪреНрдЫ рдмрд┐рдЯ рдСрдкрд░реЗрд╢рди рд╣реЛрдЧрд╛ред
- рдкреНрд░рддреНрдпреЗрдХ рдирдП рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЙрд▓ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ () рдФрд░ epoll_ctl () рджреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдкреЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЗрд╡рд▓ рдПрдХ рдХреЙрд▓ рд╣реЛрдЧреАред рдмрд╣реБрдд рд╣реА рдХрдо рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рд╕рд╛рде, рдпрд╣ рдПрдХ рдЕрдВрддрд░ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред
- epoll рдХреЗрд╡рд▓ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рдЕрдиреНрдп рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рдорд╛рди рддрдВрддреНрд░ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдк рдПрдкреЛрд▓ рдХреЗ рд╕рд╛рде рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦ рдкрд╛рдПрдВрдЧреЗ, рддрд╛рдХрд┐ рдпрд╣ рдлреНрд░реАрдмреАрдПрд╕рдбреА рдкрд░ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред
- рдЕрддреНрдпрдзрд┐рдХ рднрд░рд╛ рд╣реБрдЖ рд╕рдорд╛рдирд╛рдВрддрд░ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдХрдард┐рди рд╣реИред рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореМрд▓рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рд▓реЛрдб рд╕реНрддрд░ рдХреЛ рд╕рд░рд▓ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдкреЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рддрднреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕реЗ рд╕рднреА рд╕рддреНрдп рд╣реЛрдВ:
- рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдереНрд░реЗрдб рдкреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдкреЛрд▓ рд╕реЗ рд▓рд╛рдн рдирдЧрдгреНрдп рд╣реЛрдЧрд╛, рдФрд░ рдЖрдкрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
- рдЖрдк рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрдиреЗрдХреНрд╢рди (1000 рдФрд░ рдЕрдзрд┐рдХ рд╕реЗ) рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред рдХрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕реЙрдХреЗрдЯреНрд╕ рдкрд░, рдПрдкреЛрд▓ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рдирд╣реАрдВ рджреЗрдЧрд╛, рдФрд░ рдпрджрд┐ рд╕рдЪрдореБрдЪ рдХреБрдЫ рд╕реЙрдХреЗрдЯреНрд╕ рд╣реИрдВ, рддреЛ рдпрд╣ рдзреАрдорд╛ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
- рдЖрдкрдХреЗ рдХрдиреЗрдХреНрд╢рди рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рддреЗ рд╣реИрдВред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╣рд╛рдВ рдПрдХ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рдбреЗрдЯрд╛ рдХреЗ рдХреБрдЫ рд╣реА рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд╣реАрдВ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - рдкреЛрд▓ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
- рдЖрдк рдЕрдкрдирд╛ рдХреЛрдб рд▓рд┐рдирдХреНрд╕ рдкрд░ рдФрд░ рдХреЗрд╡рд▓ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВред
рдпрджрд┐ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдЖрдЗрдЯрдо рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдкреЛрд▓ рдпрд╛ рд▓рд┐рдмрд╡реЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
libevent
libevent рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдорддрджрд╛рди рд╡рд┐рдзрд┐рдпреЛрдВ (рд╕рд╛рде рд╣реА рдХреБрдЫ рдЕрдиреНрдп) рдХреЛ рдПрдХреАрдХреГрдд рдПрдкреАрдЖрдИ рдореЗрдВ рд▓рдкреЗрдЯрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдмрд╛рд░ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдмрдирд╛ рдФрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ рднреА, рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХрд╛рдореЗрдЪреНрдЫрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдЖрд╡рд░рдг рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рддрд░реАрдХреЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЕрдкрдиреЗ рд╕рднреА рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХреЗ рд╕рд╛рдеред libevent 1024 рд╕реЗ рдЕрдзрд┐рдХ рд╕реЙрдХреЗрдЯреНрд╕ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдФрд░ рдПрдкреЛрд▓ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рдмрд┐рдирд╛ рдШрдЯрдирд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрдХрдиреАрдХреЛрдВ рдХреЛ рдЬрд╛рдирдирд╛ рдЕрднреА рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рд╡рд┐рднрд┐рдиреНрди рдорддрджрд╛рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░рд┐рд╡рд╛рдж рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдкреАрдЖрдИ рдХреЛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдмрдирд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдИрд╡реЗрдВрдЯ рд╕рд┐рд▓реЗрдХреНрд╢рди рдЗрдВрдЬрдиреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдЖрд╕рд╛рди рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд┐рдирдХреНрд╕ рдФрд░ рдлреНрд░реАрдмреАрдПрд╕рдбреА (рдПрдкреЛрд▓ рдФрд░ рдХрд╛рдХреНрдпреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред
рджреЛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рд╕рдордп рдкрд░рд┐рд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
- рдЖрдкрдиреЗ рдЪреБрдирд┐рдВрджрд╛ рдФрд░ рдорддрджрд╛рди рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рджреЗрдЦрд╛ рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред
- рдЖрдкрдХреЛ рдХрдИ OS рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ