рд╣рдордиреЗ рджрд╕ рдмрд╛рд░ рдЯреЛрдХрд┐рдпреЛ рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рддреЗрдЬ рдХрд┐рдпрд╛ рд╣реИ

рд╣рдо рдЯреЛрдХрди рдХреЗ рдЕрдЧрд▓реЗ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реИрдВ, рдЬрдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░рдирдЯрд╛рдЗрдо рд╡рд╛рддрд╛рд╡рд░рдгред 13 рдЕрдХреНрдЯреВрдмрд░ рдХреЛ, рдПрдХ рд╢рд╛рдЦрд╛ рдореЗрдВ рд╡рд┐рд▓рдп рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдЕрдиреБрд╕реВрдЪрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдкреВрд▓ рдЕрдиреБрд░реЛрдз рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкрд░рд┐рдгрд╛рдо рд╡рд┐рд╢рд╛рд▓ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдФрд░ рд╡рд┐рд▓рдВрдмрддрд╛ рдХрдо рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдХреБрдЫ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдиреЗ рджрд╕ рдЧреБрдирд╛ рддреНрд╡рд░рдг рджрд░реНрдЬ рдХрд┐рдпрд╛! рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рднреЛрдВ рдХреЛ рдирд╣реАрдВ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдпрд╣ рднреА рдЬрд╛рдБрдЪ рдХреА рдХрд┐ рд╢реЗрдбреНрдпреВрд▓рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреИрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╣рд╛рдЗрдкрд░ рдФрд░ рдЯреЙрдирд┐рдХ (рд╕реНрдкреЙрдЗрд▓рд░: рдкрд░рд┐рдгрд╛рдо рдЕрджреНрднреБрдд рд╣реИ)ред

рдПрдХ рдирдП рдпреЛрдЬрдирд╛рдХрд╛рд░ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рддреИрдпрд╛рд░реА рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рд╡рд┐рд╖рдпрдЧрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЦреЛрдЬ рдореЗрдВ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдореИрдВрдиреЗ рдпрд╣ рднреА рдкрд╛рдпрд╛ рдХрд┐ рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдЯреЛрдХрд┐рдпреЛ рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕рдлрд╛рдИ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдиреБрд╕реВрдЪрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдпрд╣ рд╡рд┐рд╕реНрддреГрдд рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ рдЬреЛ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВ рдФрд░ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЕрд╕рдлрд▓ рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд▓реЗрдЦ рдбрд┐рдЬрд╛рдЗрди рдХреА рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдиреМрдХрд░реА рдкрд░ рдХрдмреНрдЬрд╛ рдиреАрддрд┐рдпрд╛рдВ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдлрд┐рд░ рдирдП Tokio рдЕрдиреБрд╕реВрдЪрдХ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдПрдБред

рдорд╛рдирд╛ рдЕрдиреБрдХреВрд▓рди:


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЦреНрдп рд╡рд┐рд╖рдп "рдХрдореА" рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдХреЛрдб рдЗрд╕рдХреА рдХрдореА рд╣реИ!

рд╣рдо рдирдП рдЕрдиреБрд╕реВрдЪрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рддрд╛рд▓реЗ рдХреЗ рдмрд┐рдирд╛ рд╕рд╣реА, рд╕рдорд╛рдирд╛рдВрддрд░ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдзреАрд░реЗ-рдзреАрд░реЗ, рд▓реЗрдХрд┐рди рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдЬрд▓реНрджреА рд╕реЗ, рд▓реЗрдХрд┐рди рдЧреНрд▓рд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдмрдЧ рд╕реНрдореГрддрд┐ рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрд▓реНрджреА рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рд▓реВрдо , рдПрдХ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдг рд▓рд┐рдЦрд╛ред

рд╡рд┐рд╖рдп рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:

  • @withoutboats рдФрд░ рдЕрдиреНрдп рдЬреЛ Rust рдореЗрдВ async / await рдХрд╛рд░реНрдп рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рдереЗред рдЖрдкрдиреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред рдпрд╣ рдПрдХ рдХрд┐рд▓рд░ рдлреАрдЪрд░ рд╣реИред
  • @ cramertj рдФрд░ рдЕрдиреНрдп рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ std::task рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рдЬреЛ рдерд╛ рдЙрд╕ рдкрд░ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╕реБрдзрд╛рд░ рд╣реИред рдФрд░ рдорд╣рд╛рди рдХреЛрдбред
  • Buoyant , Linkerd рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ , рдФрд░ рдЗрд╕рд╕реЗ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдореЗрд░реЗ рдирд┐рдпреЛрдХреНрддрд╛ред рдореБрдЭреЗ рдЗрд╕ рдХрд╛рдо рдкрд░ рдЗрддрдирд╛ рд╕рдордп рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ рд╕реЗрд╡рд╛ рдЬрд╛рд▓ рдореЗрдВ рд░реБрдЪрд┐ рд╣реИ, рддреЛ Linkerd рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдЬрд▓реНрдж рд╣реА рдЗрд╕рдореЗрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рд╕рднреА рд▓рд╛рдн рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗред
  • рдРрд╕реЗ рдЕрдЪреНрдЫреЗ рдпреЛрдЬрдирд╛рдХрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЬрд╛рдПрдВ ред

рдПрдХ рдХрдк рдХреЙрдлреА рд▓реЗрдВ рдФрд░ рд╡рд╛рдкрд╕ рдмреИрдареЗрдВред рдпрд╣ рдПрдХ рд▓рдВрдмрд╛ рд▓реЗрдЦ рд╣реЛрдЧрд╛ред

рдпреЛрдЬрдирд╛рдХрд╛рд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ?


рд╢реЗрдбреНрдпреВрд▓рд░ рдХрд╛ рдХрд╛рдо рдХрд╛рдо рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдирд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХрд╛рд░реНрдп рдХреА рдЗрдХрд╛рдЗрдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗред рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рддрдм рдЪрд▓рд╛рдиреЗ рдпреЛрдЧреНрдп рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╡рд╣ рдЕрдкрдиреЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдХреЛрдИ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдореЛрдб рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рд╡рд╣ рдмрд╛рд╣рд░реА рд╕рдВрд╕рд╛рдзрди рдкрд░ рд▓реЙрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХрд╛рд░реНрдп рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдп рдХреЛ рдПрдХ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рддрдХ рд╡реЗ рд╕реНрдЯреИрдВрдбрдмрд╛рдп рдореЛрдб рдкрд░ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрддреЗ, рд╢реЗрдбреНрдпреВрд▓рд░ рд░рдирд┐рдВрдЧ рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рдХрд╛рд░реНрдп рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдЯрд╛рд╕реНрдХ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ - рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрд╕рд╛рдзрдиред

рдЖрд▓реЗрдЦ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдЕрдиреБрд╕реВрдЪрд┐рдпреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ (рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рдХрд░реНрдиреЗрд▓ рд╕реНрддрд░ рд╢реЗрдбреНрдпреВрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЯреЛрдХрд┐рдпреЛ рд╢реЗрдбреНрдпреВрд▓рд░ рд░рд╕реНрдЯ рдлреНрдпреВрдЪрд░реНрд╕ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ "рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣рд░реЗ рдзрд╛рдЧреЗ" рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ M: N рдорд┐рд╢реНрд░рд┐рдд рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдкреИрдЯрд░реНрди рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдп рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрдИ рдереНрд░реЗрдбреНрд╕ рдкрд░ рдмрд╣реБрд╕рдВрдХреЗрддрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред

рдПрдХ рд╢реЗрдбрдпреВрд▓рд░ рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХреЗ рд╕рд╛рдеред рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рд╕реНрддрд░ рдкрд░, рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рдПрдХ рд░рди рдХрддрд╛рд░ рдФрд░ рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдореЙрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдЕрд▓рдЧ рдЦреАрдВрдЪрддрд╛ рд╣реИред рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реИ рдЬреЛ рдПрдХ рдереНрд░реЗрдб рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рдЫрджреНрдо рдХреЛрдб рдореЗрдВ, рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рддрд╛ рд╣реИ:

 while let Some(task) = self.queue.pop() { task.run(); } 

рдЬрдм рдХреЛрдИ рдХрд╛рд░реНрдп рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред



рдпрджреНрдпрдкрд┐ рдЖрдк рдПрдХ рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрд╕рд╛рдзрди, рдХрд╛рд░реНрдп рдФрд░ рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдПрдХ рд╣реА рдзрд╛рдЧреЗ рдкрд░ рдореМрдЬреВрдж рд╣реЛрддреЗ рд╣реИрдВ, рдЯреЛрдХрд┐рдпреЛ рдХрдИ рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИред рд╣рдо рдПрдХ рдРрд╕реА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдореЗрдВ рдХрдИ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╣реЛрддреЗ рд╣реИрдВред рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЗ рд╡рд┐рдХрд╛рд╕ рд╕реЗ рд▓реЛрд╣реЗ рдХреА рдЕрдкрд░реНрдпрд╛рдкреНрдд рд▓реЛрдбрд┐рдВрдЧ рд╣реЛ рдЬрд╛рдПрдЧреАред рд╣рдо рд╕рднреА CPU рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ:

  • рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░, рдХрдИ рдкреНрд░реЛрд╕реЗрд╕рд░ред
  • рдХрдИ рдкреНрд░реЛрд╕реЗрд╕рд░, рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рд░рди рдХрддрд╛рд░ рдХреЗ рд╕рд╛рдеред

рдПрдХ рдмрд╛рд░реА, рдХрдИ рдкреНрд░реЛрд╕реЗрд╕рд░


рдЗрд╕ рдореЙрдбрд▓ рдХреА рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рд╣реИред рдЬрдм рдХрд╛рд░реНрдп рдкреВрд░реНрдг рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдХрддрд╛рд░ рдХреА рдкреВрдВрдЫ рдкрд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдИ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдЕрд▓рдЧ рдзрд╛рдЧреЗ рдореЗрдВред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрддрд╛рд░ рдХреЗ рд╕рд┐рд░ рд╕реЗ рдПрдХ рдХрд╛рд░реНрдп рд▓реЗрддрд╛ рд╣реИ рдпрд╛ рдпрджрд┐ рдХреЛрдИ рдХрд╛рд░реНрдп рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ рддреЛ рдереНрд░реЗрдб рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рддрд╛ рд╣реИред



рдирд┐рд╖реНрдкрд╛рджрди рд▓рд╛рдЗрди рдХреЛ рдХрдИ рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдФрд░ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдШреБрд╕рдкреИрда рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдХрддрд╛рд░ рдореЗрдВ рдЕрдЧрд▓реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ (рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рдмрдЬрд╛рдп)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреБрд╢ рдФрд░ рдкреЙрдк рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рд▓реЙрдХрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдкреБрд╢ рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рд╕рдордиреНрд╡рдпрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреЙрдк рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рд▓реЙрдХрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдмрд╣реБ-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрддрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИ)ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рддрд╛рд▓реЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЙрдЪрд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд╣реЗрдб рдХреЗрд╡рд▓ рдореНрдпреВрдЯреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди рдереНрд░реЗрдб рдкреВрд▓ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдХрдИ рдлрд╛рдпрджреЗ рд╣реИрдВ:

  • рдХрд╛рд░реНрдп рдХрд╛рдлреА рдирд┐рдпреЛрдЬрд┐рдд рд╣реИрдВред
  • рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдорд╛рдирдХ рдХрддрд╛рд░ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдкреНрд░реЛрд╕реЗрд╕рд░ рдЪрдХреНрд░ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддреА рд╣реИред

рдирд┐рд╖реНрдкрдХреНрд╖ (рдиреНрдпрд╛рдпрд╕рдВрдЧрдд) рдпреЛрдЬрдирд╛ рдкрд░ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдиреЛрдЯред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЬреЛ рдХреЛрдИ рдкрд╣рд▓реЗ рдЖрдпрд╛ рдерд╛ рд╡рд╣ рдкрд╣рд▓реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реНрдп рдирд┐рдпреЛрдЬрдХ рдирд┐рд╖реНрдкрдХреНрд╖ рд╣реЛрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрдкрд╡рд╛рдж рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд╛рдВрдЯрд╛-рдЬреБрдбрд╝рд╛рд╡ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░рдХрд░рдг, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрдкрдХрдерд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдиреНрдпрд╛рдп рдХреЗ рдмрдЬрд╛рдп рдкрд░рд┐рдгрд╛рдо рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЧрддрд┐ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдХ рд╣реИред

рдЗрд╕ рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рд╣реИред рд╕рднреА рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрддрд╛рд░ рдХреЗ рдкреНрд░рдореБрдЦ рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд░рддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди рдХреЗ рдзрд╛рдЧреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдХрддрд╛рд░ рд╕реЗ рдЗрд╕реЗ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдкрд╛рд░ рдХрд░ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрддрд╛рд░ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬрдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрд╣реБрдд рдЬрд▓реНрджреА рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрддрд╛рд░ рдореЗрдВ рд▓рдбрд╝рд╛рдИ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд╣реЗрдб рдХреА рд▓рд╛рдЧрдд рдореЗрдВ рдХрд╛рдлреА рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИред

рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдФрд░ рдпрд╛рдВрддреНрд░рд┐рдХ рд╕рд╣рд╛рдиреБрднреВрддрд┐


рдЕрдзрд┐рдХрддрдо рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЕрдзрд┐рдХрддрдо рд▓рд╛рдн рдЙрдард╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП "рдпрд╛рдВрддреНрд░рд┐рдХ рд╕рд╣рд╛рдиреБрднреВрддрд┐" рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╣рд▓реА рдмрд╛рд░ рдорд╛рд░реНрдЯрд┐рди рдереЙрдореНрдкрд╕рди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЬрд┐рд╕рдХрд╛ рдмреНрд▓реЙрдЧ рдЕрдм рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдмрд╣реБрдд рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рд╣реИ)ред

рдЖрдзреБрдирд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╕рдорд╛рдирддрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЪрд░реНрдЪрд╛ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рд▓реЛрд╣реЗ рдореЗрдВ рддреЗрдЬреА рдХреЗ рдХрд╛рд░рдг рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕реАрдкреАрдпреВ рдХреЛрд░ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд▓реИрдкрдЯреЙрдк рдореЗрдВ рдЫрд╣ рд╣реЛрддреЗ рд╣реИрдВ) рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдХрд╛рд░рдг рдкреНрд░рддреНрдпреЗрдХ рдХреЛрд░ рдЫреЛрдЯреЗ рд╕рдордп рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреИрд╢ рдкрд░ рдкрд╣реБрдВрдЪ рдФрд░ рдореЗрдореЛрд░реА рдЬреИрд╕реЗ рдХрд╛рд░реНрдп рд╕реАрдкреАрдпреВ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рд╕реАрдкреАрдпреВ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЕрдзрд┐рдХрддрдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдВрдХрд▓рдХ рдмрд╣реБрдд рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рднреА рд╣рдореЗрдВ рд╕рдВрд░реЗрдЦрдг рдФрд░ рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдкреИрдЯрд░реНрди рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ред

рдЕрд▓рдЧ рдереНрд░реЗрдб рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдХ рдПрдХрд▓ рдереНрд░реЗрдб рдХреА рддрд░рд╣ рдмрд╣реБрдд рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рдХрдИ рдереНрд░реЗрдб рдПрдХ рд╕рд╛рде рдПрдХ рд╣реА рдХреИрд╢ рд▓рд╛рдЗрди (рд╕рдорд╡рд░реНрддреА рдореНрдпреВрдЯреЗрд╢рди) рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рд╕реБрд╕рдВрдЧрдд рд╕реНрдерд┐рд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, CPU рдХреИрд╢ рд╕реБрд╕рдВрдЧрддрддрд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдХреНрд░рд┐рдп рд╣реИред рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рд╕реАрдкреАрдпреВ рдХреЗ рдХреИрд╢ рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖ рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрд╕рдВрднрд╡ рд╣реЛ, рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмреАрдЪ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЗ рдмрдЪреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдзреАрдорд╛ рд╣реИред

рдХрдИ рдкреНрд░реЛрд╕реЗрд╕рд░, рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдХреЗ рд╕рд╛рде


рдПрдХ рдЕрдиреНрдп рдореЙрдбрд▓ рдХрдИ рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рд╢реЗрдбреНрдпреВрд▓рд░реНрд╕ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХрд╛рд░реНрдп рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рддрдп рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд░рд╕реНрдЯ рдЯрд╛рд╕реНрдХ рдореЙрдбрд▓ рдХреЛ рдХрд┐рд╕реА рднреА рдзрд╛рдЧреЗ рд╕реЗ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рдкрдВрдХреНрддрд┐рдмрджреНрдз рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢реЗрдбреНрдпреВрд▓рд░ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╛ рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдереНрд░реЗрдб-рд╕реЗрдл рдкреБрд╢ рдСрдкрд░реЗрд╢рди (MPSC) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ, рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рджреЛ рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░реЗрдВ рд╣реЛрддреА рд╣реИрдВ: рдЕрдирд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдФрд░ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рддред



рдпрд╣ рд░рдгрдиреАрддрд┐ Seastar рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдо рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ, рдпрд╣ рд░рдгрдиреАрддрд┐ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдЧрддрд┐ рджреЗрддреА рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╣ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдпрджрд┐ рдХрд╛рд░реНрдпрднрд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдЬрд╛рддреАрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреБрдЫ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб рдХреЗ рдЕрдзреАрди рд╣реИрдВ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИрдВ, рдЬреЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЗрд╖реНрдЯрддрдо рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЬрдм рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдПрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рддреЛ рдпрд╣ рдПрдХрд▓-рд╣рд╛рде рд╕реЗ рдкреАрдХ рд▓реЛрдб рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЕрдиреНрдп рдмреЗрдХрд╛рд░ рд╣реЛред

рдЕрдзрд┐рдХрд╛рдВрд╢ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рд╡рд░реНрдХрд▓реЛрдб рд╕рдЬрд╛рддреАрдп рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╕рд╛рдорд╛рдиреНрдп рдЙрджреНрджреЗрд╢реНрдп рдирд┐рдпреЛрдЬрдХ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рдореЙрдбрд▓ рдХреЛ рджреВрд░ рдХрд░рддреЗ рд╣реИрдВред

рдЬреЙрдм рдХреИрдкреНрдЪрд░ рд╢реЗрдбреНрдпреВрд▓рд░


рдХрд╛рдо рдЪреБрд░рд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрд╕реВрдЪрдХ рд╢рд╛рд░реНрд▓реНрдб рд╢реЗрдбреНрдпреВрд▓рд░ рдореЙрдбрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЕрдзреВрд░реЗ рд▓реЛрдбрд┐рдВрдЧ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЬреЛ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЙрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд╣рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдХрддрд╛рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд╣рд╛рдВ рд╕реЗ рдХреБрдЫ рд╣рдбрд╝рдкрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдкреАрдпрд░-рдЯреВ-рдкреАрдпрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░реЛрдВ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдорд┐рд▓рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реНрд▓реАрдк рдореЛрдб рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред



рдореЙрдбрд▓ рд╕реНрддрд░ рдкрд░, рдпрд╣ "рджреЛрдиреЛрдВ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда" рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред рд▓реЛрдб рдХреЗ рддрд╣рдд, рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдУрд╡рд░рд╣реЗрдб рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдмреАрдЪ рд▓реЛрдб рдЕрд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╢реЗрдбреНрдпреВрд▓рд░ рдЗрд╕реЗ рдкреБрдирд░реНрд╡рд┐рддрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╢реЗрдбреНрдпреВрд▓рд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреЛ , рдПрд░реНрд▓рд╛рдВрдЧ , рдЬрд╛рд╡рд╛ рдФрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рдХрддрд╛рд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдиреМрдХрд░реА рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЪрд┐рдХрдиреА рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдмреАрдЪ рдХреБрдЫ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреИрдкреНрдЪрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд╣реЗрдб рд▓рд╛рдн рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: рдкреНрд░реЛрд╕реЗрд╕рд░ рдП рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреА рдПрдХ рдЦрд╛рд▓реА рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рд╣реИред рдкреНрд░реЛрд╕реЗрд╕рд░ рдмреА рдмреЗрдХрд╛рд░ рд╣реИ; рд╡рд╣ рдХреБрдЫ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣ рдЕрд╕рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд╣ рд╕реНрд▓реАрдк рдореЛрдб рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рддрдм рдкреНрд░реЛрд╕реЗрд╕рд░ рдП рдХреЗ рдХрд╛рд░реНрдп рд╕реЗ 20 рдХрд╛рд░реНрдп рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдкреНрд░реЛрд╕реЗрд╕рд░ рдмреА рдХреЛ рдЬрд╛рдЧрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдкрдХрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╢реЗрдбреНрдпреВрд▓рд░ рдореЗрдВ рдХреБрдЫ рд╣реЗрдпреВрд░рд┐рд╕реНрдЯрд┐рдХреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрдкрдиреА рдХрддрд╛рд░ рдореЗрдВ рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЕрд░ рдкреАрдпрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдСрдкрд░реЗрд╢рди рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:

  • рдХрдо рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди, рдмреЗрд╣рддрд░ред
  • рдиреМрдХрд░реА рдкрд░ рдХрдмреНрдЬрд╛ рд╕рд╛рдорд╛рдиреНрдп рдЙрджреНрджреЗрд╢реНрдп рдпреЛрдЬрдирд╛рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИред
  • рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рдо рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЯреЛрдХрд┐рдпреЛ 0.1 рд╕рдордпрдмрджреНрдзрдХ


рдЯреЛрдХрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╢реЗрдбреНрдпреВрд▓ рдорд╛рд░реНрдЪ 2018 рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреБрдЫ рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╣ рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕ рдерд╛, рдЬреЛ рдЧрд▓рдд рдирд┐рдХрд▓рд╛ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЯреЛрдХрд┐рдпреЛ 0.1 рдЕрдиреБрд╕реВрдЪрдХ рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдереНрд░реЗрдбреНрд╕ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЕрдЧрд░ рд╡реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдХреНрд░рд┐рдп рдереЗред рд╢реЗрдбреНрдпреВрд▓рд░ рдореВрд▓ рд░реВрдк рд╕реЗ рд░рд╕реНрдЯ рдереНрд░реЗрдб рдкреВрд▓ рдХреЗ рд▓рд┐рдП "рд╕рд╛рдорд╛рдиреНрдп рдЙрджреНрджреЗрд╢реНрдп" рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрд╕ рд╕рдордп, рдЯреЛрдХрд┐рдпреЛ рд░рдирдЯрд╛рдЗрдо рдЕрднреА рднреА рд╡рд┐рдХрд╛рд╕ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ рдерд╛ред рддрдм рдореЙрдбрд▓ рдиреЗ рдорд╛рдирд╛ рдХрд┐ I / O рдХрд╛рд░реНрдпреЛрдВ рдХреЛ I / O рдЪрдпрдирдХрд░реНрддрд╛ (epoll, kqueue, iocp ...) рдХреЗ рд╕рдорд╛рди рдзрд╛рдЧреЗ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдзрд┐рдХ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдереНрд░реЗрдб рдкреВрд▓ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ, рд╕рдХреНрд░рд┐рдп рдереНрд░реЗрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд▓рдЪреАрд▓рд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдЧреНрд░рд╣рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдереНрд░реЗрдбреНрд╕ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдиреМрдХрд░реА рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╢реЗрдбреНрдпреВрд▓рд░ рдореЗрдВ, рдореЙрдбрд▓ рдиреЗ рд╕рднреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛, рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдХреНрд░рд┐рдп рд░рд╛рдЬреНрдп рдореЗрдВ рдереНрд░реЗрдб рдХреА рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рджреВрд╕рд░реЗ, рджреЛ-рддрд░рдлрд╝рд╛ рдХреНрд░реЙрд╕рдмреАрдо рд▓рд╛рдЗрди рд╡рд╣рд╛рдБ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рдереА ред рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЛ-рддрд░рдлрд╝рд╛ рдЪреЗрд╕-рд▓реЗрд╡ рд▓рд╛рдЗрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдФрд░ рдпрд╣ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред

рддреАрд╕рд░рд╛, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдпрд╛ред рдпрд╣ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдп рдЕрдиреБрд╕реВрдЪрдХ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рдПрдЯрдорд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдмрд╣реБрдд рдЕрдзреАрд░ рдерд╛, рдЬрд╣рд╛рдВ рдореНрдпреВрдЯреЗрдХреНрд╕ рдиреЗ рдареАрдХ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдмрдХ рдпрд╣ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдмрд╛рд░ рдпрд╣ рдореНрдпреВрдЯреЗрдХреНрд╕ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЕрдВрдд рдореЗрдВ, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХрдИ рдЫреЛрдЯреА рдЦрд╛рдорд┐рдпрд╛рдВ рдереАрдВред рд╢реБрд░реБрдЖрддреА рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬрдВрдЧ рдореЙрдбрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд┐рд╡рд░рдг рдХрд╛рдлреА рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдЖ, рд▓реЗрдХрд┐рди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдиреЗ рд╣рд░ рд╕рдордп рдПрдкреАрдЖрдИ рдХреЛ рд╕реНрдерд┐рд░ рд░рдЦрд╛ред рдЗрд╕рдХреЗ рдХрд╛рд░рдг рдХреБрдЫ рддрдХрдиреАрдХреА рдЛрдг рдЬрдорд╛ рд╣реЛ рдЧрдПред

рдЕрдм рдЯреЛрдХрд┐рдпреЛ рдкрд╣рд▓реА рдмрдбрд╝реА рд░рд┐рд▓реАрдЬ рдХреЗ рдХрд░реАрдм рдкрд╣реБрдВрдЪ рд░рд╣рд╛ рд╣реИ - рдФрд░ рд╣рдо рдЗрд╕ рд╕рд╛рд░реЗ рдХрд░реНрдЬ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдЕрдиреБрднрд╡ рд╕реЗ рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рд░реЛрдорд╛рдВрдЪрдХ рд╕рдордп рд╣реИ!

рдЕрдЧрд▓реА рдкреАрдврд╝реА рдЯреЛрдХрд┐рдпреЛ рд╢реЗрдбреНрдпреВрд▓рд░


рдЕрдм рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдирдП рд╢реЗрдбреНрдпреВрд▓рд░ рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рд╣реБрдЖ рд╣реИред

рдирдИ рдХрд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЯреЛрдХрд┐рдпреЛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХреНрдпрд╛ рдирд╣реАрдВ рд╣реИ , рд▓реЗрдХрд┐рди рджрдХреНрд╖рддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ: рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдЯреЗрд▓рд░ рдХреНрд░реЗрдорд░ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд std рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рдирдИ рдкреНрд░рдгрд╛рд▓реА рд╣реИ ред рдпрд╣ рдкреНрд░рдгрд╛рд▓реА рд╣реБрдХ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдХрд┐ рдЕрдиреБрд╕реВрдЪрдХ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬрдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢рд╛рдирджрд╛рд░ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдкрд┐рдЫрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рд╣рд▓реНрдХрд╛ рдФрд░ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╣реИред

рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ Waker рд╕рдВрд░рдЪрдирд╛ рд╕рдВрдХреЗрдд рджреЗрддреА рд╣реИ рдХрд┐ рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдХрд╛рд░реНрдп рд╣реИ рдЬрд┐рд╕реЗ рд╢реЗрдбреНрдпреВрд▓рд░ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдирдИ рдХрд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ, рдпрд╣ рджреЛ-рд╕реВрдЪрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдерд╛ред рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ Waker рдореВрд▓реНрдп рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рдУрд╡рд░рд╣реЗрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдФрд░ рдпрд╣ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдХрдо рдЬрдЧрд╣ рд▓реЗрддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдХреИрд╢ рд▓рд╛рдЗрди рдореЗрдВ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдХреЛ рдирд┐рдЪреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡рд┐рдЯреЗрдмрд▓ рдбрд┐рдЬрд╝рд╛рдЗрди рдиреЗ рдХрдИ рдЕрдиреБрдХреВрд▓рди рдХрд┐рдП, рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред

рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрддрд╛рд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЪреБрдирдирд╛


рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдЕрдиреБрд╕реВрдЪрдХ рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдХ рд╣реИред рдореВрд▓ рдЯреЛрдХрд┐рдпреЛ рдЕрдиреБрд╕реВрдЪрдХ рдиреЗ рджреЛ-рддрд░рдлрд╝рд╛ рдХреНрд░реЙрд╕рдмреАрдо рдХрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ : рдПрдХ рдПрдХрд▓-рд╕реНрд░реЛрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдирд┐рд░реНрдорд╛рддрд╛) рдФрд░ рдХрдИ рдЙрдкрднреЛрдХреНрддрд╛ред рдПрдХ рдХрд╛рд░реНрдп рдХреЛ рдПрдХ рдЫреЛрд░ рдкрд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рд╕реЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп, рдереНрд░реЗрдб рдХрддрд╛рд░ рдХреЗ рдЕрдВрдд рд╕реЗ рдорд╛рдиреЛрдВ рдХреЛ "рдкреБрд╢" рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЕрдиреНрдп рдереНрд░реЗрдб рдХрд╛рд░реНрдп рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ, рдЙрд╕реА рдСрдкрд░реЗрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рджреЛ-рддрд░рдлрд╝рд╛ рдХрддрд╛рд░ рдПрдХ рд╕рд░рдгреА рдФрд░ рд╕рд┐рд░ рдФрд░ рдкреВрдВрдЫ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЗ рдПрдХ рд╕реЗрдЯ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИред рдЬрдм рдХрддрд╛рд░ рднрд░ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЗрд╕рдХреА рд╢реБрд░реВрдЖрдд рд╕реЗ рднрдВрдбрд╛рд░рдг рд╕реНрдерд╛рди рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреАред рдПрдХ рдирдпрд╛, рдмрдбрд╝рд╛ рд╕рд░рдгреА рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдорд╛рдиреЛрдВ рдХреЛ рдирдП рд╕рдВрдЧреНрд░рд╣рдг рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдмрдврд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдЙрдкрд░рд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИред рдкреБрд╢ / рдкреЙрдк рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЗрд╕ рд╡реГрджреНрдзрд┐ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореВрд▓ рд╕рд░рдгреА рдХреЛ рдореБрдХреНрдд рдХрд░рдирд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдард┐рдирд╛рдЗрдпреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реИред рдПрдХ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ (рдЬреАрд╕реА) рднрд╛рд╖рд╛ рдореЗрдВ, рдкреБрд░рд╛рдиреА рд╕рд░рдгреА рдЧреБрдВрдЬрд╛рдЗрд╢ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рдПрдЧреА рдФрд░ рдЕрдВрддрддрдГ рдЬреАрд╕реА рдЗрд╕реЗ рд╕рд╛рдл рдХрд░ рджреЗрдЧреАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдВрдЧ рдПрдХ рдЬреАрд╕реА рдХреЗ рдмрд┐рдирд╛ рдЬрд╣рд╛рдЬреЛрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╕рд░рдгреА рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рд╕реНрд╡рдпрдВ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдзрд╛рдЧреЗ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕реНрдореГрддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрд░реЙрд╕рдмреАрдо рдПрдХ рдпреБрдЧ рдЖрдзрд╛рд░рд┐рдд рдкреБрдирд░реНрд╕реНрдорд░рдг рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдпрд╣ рдЧреИрд░-рддреБрдЪреНрдЫ рдУрд╡рд░рд╣реЗрдб рдХреЛ рдореБрдЦреНрдп рдкрде (рдЧрд░реНрдо рдкрде) рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдХреЛ рдЕрдм рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЖрд░рдПрдордбрдмреНрд▓реНрдпреВ (рд░реАрдб-рдореЙрдбрд┐рдлрд╛рдИ-рд░рд╛рдЗрдЯ) рдСрдкрд░реЗрд╢рдВрд╕ рдХреЛ рдЕрдиреНрдп рдереНрд░реЗрдбреНрд╕ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЗ рдкреНрд░рд╡реЗрд╢ рдФрд░ рдирд┐рдХрд╛рд╕ рдкрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд┐ рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдлрд╝ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдХреА рд╡реГрджреНрдзрд┐ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд╣реЗрдб рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ: рдХреНрдпрд╛ рдЗрд╕ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ? рдЗрд╕ рд╕рд╡рд╛рд▓ рдиреЗ рдЕрдВрддрддрдГ рдореБрдЭреЗ рдпреЛрдЬрдирд╛рдХрд╛рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рдирдИ рд░рдгрдиреАрддрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХрддрд╛рд░ рдЖрдХрд╛рд░ рд╣реИред рдЬрдм рдХрддрд╛рд░ рднрд░ рдЬрд╛рддреА рд╣реИ, рддреЛ рд╕реНрдерд╛рдиреАрдп рдХрддрд╛рд░ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдХрд╛рд░реНрдп рдХрдИ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдФрд░ рдХрдИ рдЙрддреНрдкрд╛рджрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╡реИрд╢реНрд╡рд┐рдХ рдХрддрд╛рд░ рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп-рд╕рдордп рдкрд░ рдЗрд╕ рд╡реИрд╢реНрд╡рд┐рдХ рдХрддрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдиреАрдп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдЖрд╡реГрддреНрддрд┐ рдкрд░ред

рдкрд╣рд▓реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдордиреЗ рдХреНрд░реЙрд╕рдмреАрдо рдХреЛ mpmc рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ред рдЗрд╕рд╕реЗ рдкреБрд╢ рдФрд░ рдкреЙрдк рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реБрдзрд╛рд░ рдирд╣реАрдВ рд╣реБрдЖред рдХрд╛рдо рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреА рдХреБрдВрдЬреА рдпрд╣ рд╣реИ рдХрд┐ рд▓реЛрдб рдХреЗ рддрд╣рдд рдХрддрд╛рд░реЛрдВ рдореЗрдВ рд▓рдЧрднрдЧ рдХреЛрдИ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗрд╡рд▓ рдЕрдкрдиреА рдХрддрд╛рд░ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИред

рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдореИрдВрдиреЗ рдЧреЛ рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ - рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ рд╡реЗ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдФрд░ рдХрдИ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдиреНрдпреВрдирддрдо рддреБрд▓реНрдпрдХрд╛рд▓рди рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХрддрд╛рд░ рдЖрдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИред рдЯреЛрдХрд┐рдпреЛ рдЕрдиреБрд╕реВрдЪрдХ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдХрд┐рдПред рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рдЧреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреБрдХреНрд░рдорд┐рдХ рдкрд░рдорд╛рдгреБ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ)ред рдЯреЛрдХрд┐рдпреЛ рд╕рдВрд╕реНрдХрд░рдг рднреА рджреБрд░реНрд▓рдн рдХреЛрдб рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рдХреБрдЫ рдХреЙрдкреА рдСрдкрд░реЗрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдХрддрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рдкрд░рд┐рдкрддреНрд░ рдмрдлрд░ рд╣реИ рдЬреЛ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдХрддрд╛рд░ рдХреЗ рд╕рд┐рд░ рдФрд░ рдкреВрдВрдЫ рдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░рдорд╛рдгреБ рд╕рдВрдЪрд╛рд▓рди рджреНрд╡рд╛рд░рд╛ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 struct Queue { /// Concurrently updated by many threads. head: AtomicU32, /// Only updated by producer thread but read by many threads. tail: AtomicU32, /// Masks the head / tail position value to obtain the index in the buffer. mask: usize, /// Stores the tasks. buffer: Box<[MaybeUninit<Task>]>, } 

рдПрдХрд▓ рдереНрд░реЗрдб рджреНрд╡рд╛рд░рд╛ рдкрдВрдХреНрддрд┐рдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 loop { let head = self.head.load(Acquire); // safety: this is the **only** thread that updates this cell. let tail = self.tail.unsync_load(); if tail.wrapping_sub(head) < self.buffer.len() as u32 { // Map the position to a slot index. let idx = tail as usize & self.mask; // Don't drop the previous value in `buffer[idx]` because // it is uninitialized memory. self.buffer[idx].as_mut_ptr().write(task); // Make the task available self.tail.store(tail.wrapping_add(1), Release); return; } // The local buffer is full. Push a batch of work to the global // queue. match self.push_overflow(task, head, tail, global) { Ok(_) => return, // Lost the race, try again Err(v) => task = v, } } 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ push рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдХреЗрд╡рд▓ рдкрд░рдорд╛рдгреБ рд╕рдВрдЪрд╛рд▓рди рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ Release рдСрд░реНрдбрд░ рдХреЗ рд╕рд╛рде рдмрдЪрдд Acquire рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдХреЛрдИ рдЖрд░рдПрдордбрдмреНрд▓реНрдпреВ рдСрдкрд░реЗрд╢рди ( compare_and_swap , fetch_and ...) рдпрд╛ рдХреНрд░рдорд┐рдХ рдХреНрд░рдо рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ x86 рдЪрд┐рдкреНрд╕ рдкрд░ рд╕рднреА рдбрд╛рдЙрдирд▓реЛрдб / рд╕реЗрд╡ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА "рдкрд░рдорд╛рдгреБ" рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕реАрдкреАрдпреВ рд╕реНрддрд░ рдкрд░, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ред рдкрд░рдорд╛рдгреБ рд╕рдВрдЪрд╛рд▓рди рд╕рдВрдХрд▓рдХ рдореЗрдВ рдХреБрдЫ рдЕрдиреБрдХреВрд▓рди рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдкрд╣рд▓реЗ load рдСрдкрд░реЗрд╢рди рдХреЛ Relaxed рдСрд░реНрдбрд░ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд┐рд╕реА рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдУрд╡рд░рд╣реЗрдб рдХреЛ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред

рдЬрдм рдХрддрд╛рд░ рднрд░ рдЬрд╛рддреА рд╣реИ, рддреЛ push_overflow редрдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдерд╛рдиреАрдп рд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдХрддрд╛рд░ рдореЗрдВ рдЖрдзреЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рд╡реИрд╢реНрд╡рд┐рдХ рдХрддрд╛рд░ рдПрдХ рдореНрдпреВрдЯреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдПрдХ рдШреБрд╕рдкреИрда рд╕реВрдЪреА рд╣реИред рдЬрдм рд╡реИрд╢реНрд╡рд┐рдХ рдХрддрд╛рд░ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдПрдХ рдореНрдпреВрдЯреЗрдХреНрд╕ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реВрдЪрдХ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдХрддрд╛рд░ рдХреА рдкреВрдВрдЫ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЫреЛрдЯреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдиреБрднрд╛рдЧ рдЖрдХрд╛рд░ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдкрд░рдорд╛рдгреБ рдореЗрдореЛрд░реА рдСрд░реНрдбрд░рд┐рдВрдЧ рдХреЗ рд╡рд┐рд╡рд░рдг рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдЖрдк рдКрдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд "рд╕рдорд╕реНрдпрд╛" рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ pushред рдкрд░рдорд╛рдгреБ loadрдХреНрд░рдо рд╕рдВрдЪрд╛рд▓рди Acquireрдмрд▓реНрдХрд┐ рдХрдордЬреЛрд░ рд╣реИред рдпрд╣ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдорд╛рди рд▓реМрдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдХреИрдкреНрдЪрд░ рдСрдкрд░реЗрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореВрд▓реНрдп рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИ self.head, рд▓реЗрдХрд┐рди рд╕реНрдЯреНрд░реАрдо рдХреИрд╢ рдореЗрдВpushрдкреБрд░рд╛рдирд╛ рдорд╛рди рдмрдирд╛ рд░рд╣реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреИрдкреНрдЪрд░ рдСрдкрд░реЗрд╢рди рдХреЛ рдиреЛрдЯрд┐рд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЦреНрдп (рддреЗрдЬрд╝) рддрд░реАрдХреЗ рд╕реЗ, pushрд╣рдо рдХреЗрд╡рд▓ рдЗрд╕ рдмрд╛рдд рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдерд╛рдиреАрдп рдХрддрд╛рд░ рднрд░реА рд╣реБрдИ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЪреВрдВрдХрд┐ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдзрд╛рдЧрд╛ рдХрддрд╛рд░ рдХреЛ рдзрдХреЗрд▓ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдкреБрд░рд╛рдирд╛ рдСрдкрд░реЗрд╢рди loadрдмрд╕ рдХрддрд╛рд░ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдкреВрд░реНрдг рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИред рдпрд╣ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрддрд╛рд░ рднрд░реА рд╣реБрдИ рд╣реИ, рдФрд░ рдХрд╛рд░рдг рд╣реИ push_overflow, рд▓реЗрдХрд┐рди рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рдордЬрдмреВрдд рдкрд░рдорд╛рдгреБ рдСрдкрд░реЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрджрд┐ рдпрд╣ push_overflowрдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрддрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднрд░реА рдирд╣реАрдВ рд╣реИ, рддреЛ w / рд▓реМрдЯрд╛рддрд╛ рд╣реИ Err, рдФрд░ рдСрдкрд░реЗрд╢рди pushрдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдФрд░ рдХрд╛рд░рдг рд╣реИpush_overflowрдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдХрд╛ рдЖрдзрд╛ рднрд╛рдЧ рд╡реИрд╢реНрд╡рд┐рдХ рдХрддрд╛рд░ рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдЖрдВрджреЛрд▓рди рдХреЗ рдмрд╛рдж, рдЗрд╕ рддрд░рд╣ рдХреЗ рдЭреВрдареЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЕрдХреНрд╕рд░ рдХрдо рд╣реЛрддреЗ рд╣реИрдВред

рд╕реНрдерд╛рдиреАрдп pop(рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЗ, рдЬреЛ рдХрддрд╛рд░ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддрд╛ рд╣реИ) рднреА рдмрд╕ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 loop { let head = self.head.load(Acquire); // safety: this is the **only** thread that updates this cell. let tail = self.tail.unsync_load(); if head == tail { // queue is empty return None; } // Map the head position to a slot index. let idx = head as usize & self.mask; let task = self.buffer[idx].as_ptr().read(); // Attempt to claim the task read above. let actual = self .head .compare_and_swap(head, head.wrapping_add(1), Release); if actual == head { return Some(task.assume_init()); } } 

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдПрдХ рдкрд░рдорд╛рдгреБ loadрдФрд░ рдПрдХ compare_and_swapрдПрд╕ Releaseред рдореБрдЦреНрдп рдУрд╡рд░рд╣реЗрдб рд╕реЗ рдЖрддрд╛ рд╣реИ compare_and_swapред

рдлрд╝рдВрдХреНрд╢рди stealрдХреЗ рд╕рдорд╛рди рд╣реИ pop, рд▓реЗрдХрд┐рди self.tailрдкрд░рдорд╛рдгреБ рднрд╛рд░ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕реА рддрд░рд╣ push_overflow, рдСрдкрд░реЗрд╢рди stealрдПрдХрд▓ рдХрд╛рд░реНрдп рдХреЗ рдмрдЬрд╛рдп рдЖрдзрд╛ рдХрддрд╛рд░ рд╣реЛрдиреЗ рдХрд╛ рдирд╛рдЯрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдЕрдЪреНрдЫрд╛ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред

рдЕрдВрддрд┐рдо рдЕрдиреБрдкрд▓рдмреНрдз рднрд╛рдЧ рд╡реИрд╢реНрд╡рд┐рдХ рдХрддрд╛рд░ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╣реИ, рдЬреЛ рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реНрдерд╛рдиреАрдп рдХрддрд╛рд░реЛрдВ рдХреЛ рдУрд╡рд░рдлреНрд▓реЛ рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЧреИрд░-рдкреНрд░реЛрд╕реЗрд╕рд░ рдереНрд░реЗрдбреНрд╕ рд╕реЗ рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрджрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╕реНрдерд╛рдиреАрдп рдХрддрд╛рд░ рдореЗрдВ рдХрд╛рд░реНрдп рд╣реИрдВ, рддреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реНрдерд╛рдиреАрдп рдХрддрд╛рд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ 60 рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рдж рд╡реИрд╢реНрд╡рд┐рдХ рдХрддрд╛рд░ рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдиреАрдЪреЗ рджреА рдЧрдИ "рдЦреЛрдЬ" рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реЛрдиреЗ рдкрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдХрддрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рднреА рдХрд░рддрд╛ рд╣реИред

рд╕рдВрджреЗрд╢ рдЯреЗрдореНрдкрд▓реЗрдЯ


рдЯреЛрдХрд┐рдпреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдХрдИ рдЫреЛрдЯреЗ рд╕реНрд╡рддрдВрддреНрд░ рдХрд╛рд░реНрдп рд╣реЛрддреЗ рд╣реИрдВред рд╡реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдЬреИрд╕реЗ рдЧреЛ рдФрд░ рдПрд░реНрд▓рд╛рдВрдЧ рдХреЗ рд╕рдорд╛рди рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд┐рддрдирд╛ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдпрд╣ рдкреНрд▓рд╛рдирд░ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдХрд╛рд░реНрдп A рдФрд░ B рджрд┐рдП рдЧрдП рд╣реИрдВред рдХрд╛рд░реНрдп A рдЕрдм рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдЪреИрдирд▓ рдкрд░ рдХрд╛рд░реНрдп B рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИред рдПрдХ рдЪреИрдирд▓ рдПрдХ рд╕рдВрд╕рд╛рдзрди рд╣реИ рдЬрд┐рд╕ рдкрд░ рдХрд╛рд░реНрдп рдмреА рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрдВрдж рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдХрд╛рд░реНрдп рдмреА рдХреЛ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд░рд╛рдЬреНрдп рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ - рдФрд░ рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдлрд┐рд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рд╕реЗ рдЕрдЧрд▓реЗ рдХрд╛рд░реНрдп рдХреЛ рдХрд╛рдЯ рджреЗрдЧрд╛, рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕ рдЪрдХреНрд░ рдХреЛ рддрдм рддрдХ рджреЛрд╣рд░рд╛рдПрдЧрд╛ рдЬрдм рддрдХ рдпрд╣ рдХрд╛рд░реНрдп рдмреА рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ред

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдФрд░ рдХрд╛рд░реНрдп рдмреА рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреЗрд░реА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЧрд░реНрдо рдбреЗрдЯрд╛, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рд╕рдВрджреЗрд╢, рд╕реАрдкреАрдпреВ рдХреИрд╢ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛, рддрдм рддрдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдХреИрд╢ рдХреЛ рд╕рд╛рдл рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирдпрд╛ рдЯреЛрдХрд┐рдпреЛ рд╢реЗрдбреНрдпреВрд▓рд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди (рдЧреЛ рдФрд░ рдХреЛрдЯрд▓рд┐рди рд╢реЗрдбреНрдпреВрд▓рд░реНрд╕ рдореЗрдВ)ред рдЬрдм рдХреЛрдИ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХрддрд╛рд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рд╡рд┐рд╢реЗрд╖ "рдЕрдЧрд▓реЗ рдХрд╛рд░реНрдп" рд╕реНрд▓реЙрдЯ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░реЛрд╕реЗрд╕рд░ рд╣рдореЗрд╢рд╛ рдХрддрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рд╕реНрд▓реЙрдЯ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╕реНрд▓реЙрдЯ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреБрд░рд╛рдирд╛ рдХрд╛рд░реНрдп рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕реНрд▓реЙрдЯ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрддрд╛рд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рдВрджреЗрд╢ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╡рд╕реНрддреБрддрдГ рдмрд┐рдирд╛ рдХрд┐рд╕реА рджреЗрд░реА рдХреЗ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред



рдереНрд░реЛрдЯрд▓ рдХреИрдкреНрдЪрд░


рдПрдХ рдХрд╛рд░реНрдп рдХреИрдкреНрдЪрд░ рд╢реЗрдбреНрдпреВрд▓рд░ рдореЗрдВ, рдпрджрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдЦрд╛рд▓реА рд╣реИ, рддреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкреАрдпрд░ рд╕реАрдкреАрдпреВ рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреАрдпрд░ рд╕реАрдкреАрдпреВ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдорд┐рд▓рддреЗ рд╣реИрдВ, рддреЛ рдЕрдЧрд▓реЗ рдХреЛ рдЦреЛрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣, рдЬрдм рддрдХ рдХрд┐ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдорд┐рд▓рддреЗ рд╣реИрдВред

рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдХрдИ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрдХреНрд╕рд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдиреМрдХрд░реА рдкреИрдХреЗрдЬ рдЖрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдмepollрд╕реЙрдХреЗрдЯ рдХреА рддрддреНрдкрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдорддрджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛)ред рдкреНрд░реЛрд╕реЗрд╕рд░ рдЙрдарддреЗ рд╣реИрдВ, рдХрд╛рд░реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдкреНрд░реЛрд╕реЗрд╕рд░ рдПрдХ рд╕рд╛рде рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдХрдИ рдереНрд░реЗрдбреНрд╕ рдПрдХ рд╣реА рдХрддрд╛рд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рдВрдШрд░реНрд╖ рд╣реИред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рдХрд╛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдерд┐рддрд┐ рдЕрднреА рднреА рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирдпрд╛ рд╢реЗрдбреНрдпреВрд▓рд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреИрдкреНрдЪрд░ рдСрдкрд░реЗрд╢рди рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЙрд╕ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ "рдиреМрдХрд░реА рдЦреЛрдЬ" рдпрд╛ "рдЦреЛрдЬ" рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рдореЗрдВ (рдмрд╛рдж рдореЗрдВ) рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдкрд░рдорд╛рдгреБ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИint, рдЬреЛ рдЦреЛрдЬ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЦреЛрдЬ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╕рдордп рдШрдЯ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЦреЛрдЬ рд░рд╛рдЬреНрдп рдореЗрдВ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЖрдзрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЕрдиреБрдорд╛рдирд┐рдд рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ, рдФрд░ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИред рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдереНрд░реЙрдЯрд▓рд┐рдВрдЧ рдореЗрдВ рд╕реАрдкреАрдпреВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдПрдХ рдХрдард┐рди рд╕реАрдорд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рджрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХрддрд╛ рдХрд╛ рддреНрдпрд╛рдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЦреЛрдЬ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрд╕реЗрд╕рд░ рдкреАрдпрд░ рд╕реАрдкреАрдпреВ рд╕реЗ рдХрд╛рдо рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдХрддрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред

рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмреАрдЪ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдШрдЯрд╛рдПрдВ


рдЕрдиреБрд╕реВрдЪрдХ рдХрд╛ рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╣рдХрд░реНрдореА рд╕реАрдкреАрдпреВ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ "рднрд╛рдИ" рд╕реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЙрдарддрд╛ рд╣реИ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИред рд╕реВрдЪрдирд╛рдПрдВ рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреА рд╣реИрдВред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдХрддрд╛рд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрдордЬреЛрд░ рдкрд░рдорд╛рдгреБ рдЖрджреЗрд╢ ( Acquire/ Release) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ред рд╕реНрдореГрддрд┐ рдХреЗ рдкрд░рдорд╛рдгреБ рдЖрд╡рдВрдЯрди рдХреЗ рдХрд╛рд░рдг, рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╣рдХрд░реНрдореА рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрднреА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдмрд┐рдирд╛ рдХрддрд╛рд░ рдореЗрдВ рдХрд╛рд░реНрдп рджреЗрдЦреЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдирд╛рдПрдВ рднреА рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред рдЗрд╕реА рд╡рдЬрд╣ рд╕реЗ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдорд╣рдВрдЧреЗ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рд▓рдХреНрд╖реНрдп рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рд╕реАрдкреАрдпреВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рд╣реЛ, рдЕрд░реНрдерд╛рдд рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдкрд╛рд╕ рдХрд╛рд░реНрдп рд╣реИрдВ, рдФрд░ рднрд╛рдИ рдЙрдиреНрд╣реЗрдВ рдЪреЛрд░реА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рд╕реВрдЪрдирд╛рдУрдВ рдХреА рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдПрдХ рдЧрдбрд╝рдмрдбрд╝реА рдЭреБрдВрдб рд╕рдорд╕реНрдпрд╛ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИ ред

рдореВрд▓ рдЯреЛрдХрд┐рдпреЛ рдпреЛрдЬрдирд╛рдХрд╛рд░ рдиреЗ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рднреЛрд▓реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рд┐рдпрд╛ред рдЬрдм рднреА рдХреЛрдИ рдирдпрд╛ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдПрдХ рд╕реВрдЪрдирд╛ рдорд┐рд▓рддреА рд╣реИред рдЬрдм рднреА рд╕реАрдкреАрдпреВ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдЬрд╛рдЧрдиреЗ рдХреЗ рдмрд╛рдж рдХрд╛рд░реНрдп рдХреЛ рджреЗрдЦрд╛, рддреЛ рдЙрд╕рдиреЗ рджреВрд╕рд░реЗ рд╕реАрдкреАрдпреВ рдХреЛ рдЕрдзрд┐рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕ рддрд░реНрдХ рдиреЗ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╕рднреА рдкреНрд░реЛрд╕реЗрд╕рд░реЛрдВ рдХреЛ рдЬрдЧрд╛ рджрд┐рдпрд╛ рдФрд░ рдХрд╛рдо рдХреА рддрд▓рд╛рд╢ рдореЗрдВ (рд╕рдВрдШрд░реНрд╖ рдХрд╛ рдХрд╛рд░рдг) рдмрди рдЧрдпрд╛ред рдЕрдХреНрд╕рд░, рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рдереЗ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╕реЛ рдЬрд╛рддреЗ рдереЗред

рдирдП рд╢реЗрдбреНрдпреВрд▓рд░ рдиреЗ рдЧреЛ рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЗ рд╕рдорд╛рди рдЗрд╕ рдкреИрдЯрд░реНрди рдореЗрдВ рдмрд╣реБрдд рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ред рд╕реВрдЪрдирд╛рдПрдВ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЕрдЧрд░ рдЦреЛрдЬ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреЛрдИ CPU рдирд╣реАрдВ рд╣реИ (рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВ)ред рдЬрдм рдкреНрд░реЛрд╕реЗрд╕рд░ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рддреБрд░рдВрдд рдЦреЛрдЬ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИред рдЬрдм рдЦреЛрдЬ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рдирдП рдХрд╛рд░реНрдп рдкрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкрд╣рд▓реЗ рдЦреЛрдЬ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рджреВрд╕рд░реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рддрд░реНрдХ рдЙрд╕ рдЧрддрд┐ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЙрдарддреЗ рд╣реИрдВред рдпрджрд┐ рдПрдХ рд╕рдВрдкреВрд░реНрдг рдХрд╛рд░реНрдп рдкреИрдХреЗрдЬ рддреБрд░рдВрдд рдпреЛрдЬрдирд╛рдмрджреНрдз рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдмepollрдЧрд░реНрддрд┐рдХрд╛ рдХреА рддрддреНрдкрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдорддрджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛), рдлрд┐рд░ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдп рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдПрдХ рд╕реВрдЪрдирд╛ рдорд┐рд▓реЗрдЧреАред рд╡рд╣ рдЕрдм рдЦреЛрдЬреА рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рд╣реИред рдкреИрдХреЗрдЬ рдореЗрдВ рд╢реЗрд╖ рд╢реЗрдбреНрдпреВрд▓ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рд╕реВрдЪрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЦреЛрдЬ рд░рд╛рдЬреНрдп рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕реАрдкреАрдпреВ рд╣реИред рдпрд╣ рдЕрдзрд┐рд╕реВрдЪрд┐рдд рдкреНрд░реЛрд╕реЗрд╕рд░ рдмреИрдЪ рдореЗрдВ рдЖрдзреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрдЧрд╛ рдФрд░ рдмрджрд▓реЗ рдореЗрдВ, рджреВрд╕рд░реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдЧрд╛ред рдПрдХ рддреАрд╕рд░рд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЙрдарддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рджреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдЖрдзреЗ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕реАрдкреАрдпреВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИ, рд╕рд╛рде рд╣реА рддреЗрдЬреА рд╕реЗ рд▓реЛрдб рд╕рдВрддреБрд▓рди рд╣реЛрддрд╛ рд╣реИред

рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдХрдо рдХрд░реЗрдВ


рдирдП рдЯреЛрдХрд┐рдпреЛ рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдкреЙрдиреНрдб рдЯрд╛рд╕реНрдХ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрдмрдХрд┐ рдкреБрд░рд╛рдиреЗ рдХреЛ рджреЛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкрд╣рд▓реЗ, рдХрд╛рд░реНрдп рд╕рдВрд░рдЪрдирд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рдереА:

 struct Task { /// All state needed to manage the task state: TaskState, /// The logic to run is represented as a future trait object. future: Box<dyn Future<Output = ()>>, } 

рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ Taskрдкрд░ рднреА рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛ Boxред рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдореИрдВ рдЗрд╕ рдЬреЛрдбрд╝ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ (рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ 2014 рдореЗрдВ рдХреЛрд╢рд┐рд╢ рдХреА рдереА)ред рдкреБрд░рд╛рдиреЗ рдЯреЛрдХрд┐рдпреЛ рдкреНрд▓рд╛рдирд░ рдХреЗ рдмрд╛рдж рд╕реЗ рджреЛ рдЪреАрдЬреЗрдВ рдмрджрд▓ рдЧрдИ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реНрдерд┐рд░ std::allocред рджреВрд╕рд░реЗ, рднрд╡рд┐рд╖реНрдп рдХреА рдХрд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд░рдгрдиреАрддрд┐ рдореЗрдВ рдмрджрд▓ рдЧрдИ рд╣реИ ред рдпрд╣ рджреЛ рдЪреАрдЬреЗрдВ рдереАрдВ рдЬреЛ рдЧрд╛рдпрдм рдереАрдВ, рдЖрдЦрд┐рд░рдХрд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╖рдо рдбрдмрд▓ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

рдЕрдм рд╕рдВрд░рдЪрдирд╛ Taskрдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИ рд╣реИ:

 struct Task<T> { header: Header, future: T, trailer: Trailer, } 

рдХрд╛рд░реНрдп рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдХреЗ рд▓рд┐рдП HeaderрдФрд░ Trailerрд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ 'рд╣реЙрдЯ' рдбреЗрдЯрд╛ (рд╕рд┐рд░) рдХреЗ рдмреАрдЪ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ "рдардВрдбрд╛" (рдкреВрдВрдЫ), рдПрдоред рдИ рд▓рдЧрднрдЧ рдмреАрдЪ рдбреЗрдЯрд╛ рдмрд╛рд░-рдмрд╛рд░ рдкрд╣реБрдБрдЪрд╛ рдФрд░ рдЙрди рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред "рд╣реЙрдЯ" рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд┐рд░ рдкрд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрдо рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдкреНрд░реЛрд╕реЗрд╕рд░ рдЯрд╛рд╕реНрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдбрд┐рдлрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рддреБрд░рдВрдд рдХреИрд╢ рд▓рд╛рдЗрди (64 рд╕реЗ 128 рдмрд╛рдЗрдЯреНрд╕) рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдбреЗрдЯрд╛ рдпрдерд╛рд╕рдВрднрд╡ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛред

рдкрд░рдорд╛рдгреБ рд▓рд┐рдВрдХ рдХреА рдЧрд┐рдирддреА рдореЗрдВ рдХрдореА


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдЬрд┐рд╕ рдЕрдВрддрд┐рдо рдЕрдиреБрдХреВрд▓рди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рдкрд░рдорд╛рдгреБ рд▓рд┐рдВрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реИред рдХрд╛рд░реНрдп рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдХрдИ рд╕рдВрджрд░реНрдн рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЕрдиреБрд╕реВрдЪрдХ рд╕реЗ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдмреЗрдХрд░ рд╕реЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕ рдореЗрдореЛрд░реА рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд╛рдорд╛рдиреНрдп рд░рдгрдиреАрддрд┐ рдкрд░рдорд╛рдгреБ рд▓рд┐рдВрдХ рдЧрдгрдирд╛ рд╣реИ ред рдЗрд╕ рд░рдгрдиреАрддрд┐ рдХреЗ рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдПрдХ рд▓рд┐рдВрдХ рдХреЛ рдХреНрд▓реЛрди рдХрд░рдиреЗ рдФрд░ рд╣рд░ рдмрд╛рд░ рдПрдХ рд▓рд┐рдВрдХ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рдорд╛рдгреБ рдСрдкрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЬрдм рдЕрдВрддрд┐рдо рд▓рд┐рдВрдХ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореЗрдореЛрд░реА рдХреЛ рдореБрдХреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкреБрд░рд╛рдиреЗ рдЯреЛрдХрд┐рдпреЛ рд╢реЗрдбреНрдпреВрд▓рд░ рдореЗрдВ, рд╢реЗрдбреНрдпреВрд▓рд░ рдФрд░ рд╕рднреА рд╡рдХрд░реНрд╕ рджреЛрдиреЛрдВ рдПрдХ рдЯрд╛рд╕реНрдХ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХрд╛ рд▓рд┐рдВрдХ рд░рдЦрддреЗ рдереЗ, рд▓рдЧрднрдЧ:

 struct Waker { task: Arc<Task>, } impl Waker { fn wake(&self) { let task = self.task.clone(); task.scheduler.schedule(task); } } 

рдЬрдм рдХрд╛рд░реНрдп рдЙрдарддрд╛ рд╣реИ, рддреЛ рд▓рд┐рдВрдХ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдПрдХ рдкрд░рдорд╛рдгреБ рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИ)ред рдлрд┐рд░ рд▓рд┐рдВрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛рд░реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд▓рд┐рдВрдХ рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкрд░рдорд╛рдгреБ рдХрдЯреМрддреА рд╣реЛрддреА рд╣реИред рдпреЗ рдкрд░рдорд╛рдгреБ рд╕рдВрдЪрд╛рд▓рди (рд╡реГрджреНрдзрд┐ рдФрд░ рдХрдореА) рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рдирд╛ рдЧрдпрд╛ рдерд╛ std::futureред рдЙрдиреНрд╣реЛрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдлреЛрди рдХрд░рддреЗ рд╕рдордп, Waker::wakeрдореВрд▓ рд▓рд┐рдВрдХ рдХреА wakerрдЬрд░реВрд░рдд рдирд╣реАрдВ рд░рд╣ рдЬрд╛рддреА рд╣реИред рдЬрдм рдЖрдк рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдореЗрдВ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдкрд░рдорд╛рдгреБ рд▓рд┐рдВрдХ рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА std::futureрдореЗрдВ "рдЬрд╛рдЧрдиреЗ" рдХреЗ рд▓рд┐рдП рджреЛ рдПрдкреАрдЖрдИ рдХреЙрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • wake рдЬреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ self
  • wake_by_ref рдЬреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ &self

рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдПрдкреАрдЖрдИ рдирд┐рд░реНрдорд╛рдг wake, рдкрд░рдорд╛рдгреБ рд╡реГрджреНрдзрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рддрд░рд╣ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

 impl Waker { fn wake(self) { task.scheduler.schedule(self.task); } fn wake_by_ref(&self) { let task = self.task.clone(); task.scheduler.schedule(task); } } 

рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд┐рдВрдХ рдХреЗ рдУрд╡рд░рд╣реЗрдб рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреЗрд╡рд▓ рддрднреА рдпрджрд┐ рдЖрдк рдЬрд╛рдЧрдиреЗ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЬрд╛рдЧрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ &selfред рдЬрд╛рдЧреГрддрд┐ selfрдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рд░реЛрдХрддреА рд╣реИ (рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬрд╣рд╛рдВ рд╕рдВрд╕рд╛рдзрди рдмрд╣реБрдд рд╕рд╛рд░реЗ рдорд╛рди рднреЗрдЬрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдЪреИрдирд▓, рд╕реЙрдХреЗрдЯ, ...)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдорд╛рдорд▓реЗ рдореЗрдВ selfрдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдЬрд╛рдЧрдиреЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ (рд╣рдо рдХрд┐рд╕реА рдЕрдиреНрдп рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╡рд░рдг рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ)ред

рдирдпрд╛ рдпреЛрдЬрдирд╛рдХрд╛рд░ selfрдкрд░рдорд╛рдгреБ рд╡реГрджреНрдзрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛ "рдЬрд╛рдЧрдиреЗ" рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ wake_by_ref, рдЬреЛ рдЗрд╕реЗ рдЙрддрдирд╛ рд╣реА рдкреНрд░рднрд╛рд╡реА рдмрдирд╛рддрд╛ рд╣реИwake(self)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдиреБрд╕реВрдЪрдХ рдЙрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕реВрдЪреА рд░рдЦрддрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд╣реИрдВ (рдЕрднреА рддрдХ рдкреВрд░реЗ рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВ)ред рд╕реВрдЪреА рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдореЗрдВ рдХрд╛рд░реНрдп рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдВрджрд░реНрдн рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИред

рдЗрд╕ рдЕрдиреБрдХреВрд▓рди рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ рдЕрдиреБрд╕реВрдЪрдХ рдЕрдкрдиреА рд╕реВрдЪреА рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рддрдм рддрдХ рдирд╣реАрдВ рд╣рдЯрд╛рдПрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ рдХрд┐ рдХрд╛рд░реНрдп рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд┐рд╡рд░рдг рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рд╕реНрд░реЛрдд рдХреЛ рджреЗрдЦреЗрдВред

рд▓реВрдо рдХреЗ рд╕рд╛рде рдмреЛрд▓реНрдб (рдЕрд╕реБрд░рдХреНрд╖рд┐рдд) рд╕рдВрдЧрд╛рдорд┐рддрд┐


рддрд╛рд▓реЗ рдХреЗ рдмрд┐рдирд╛ рд╕рд╣реА, рд╕рдорд╛рдирд╛рдВрддрд░ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдзреАрд░реЗ-рдзреАрд░реЗ, рд▓реЗрдХрд┐рди рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдЬрд▓реНрджреА рд╕реЗ, рд▓реЗрдХрд┐рди рдЧреНрд▓рд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдмрдЧ рд╕реНрдореГрддрд┐ рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк, рдЬрд▓реНрджреА рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдирдП рдЕрдиреБрд╕реВрдЪрдХ рдиреЗ рдХреБрдЫ рдЕрдзрд┐рдХ рдЖрдХреНрд░рд╛рдордХ рдЕрдиреБрдХреВрд▓рди рдХрд┐рдП рдФрд░ рдпрд╣ stdрд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдмрдЪрддрд╛ рд╣реИ ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рд╣реЛрддреЗ рд╣реИрдВ unsafeред

рд╕рдорд╛рдирд╛рдВрддрд░ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЖрдкрдХреЗ рдмрдЬрд╛рдп рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдФрд░ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ (рдПрдХ рдЖрдХрд░реНрд╖рдХ рд╡рд┐рдХрд▓реНрдк, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ)ред рдПрдХ рдЕрдиреНрдп рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рд╣реИ рдЬреЛ рдПрдХ рд▓реВрдк рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдкрдХрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж TSAN рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдмреЗрд╢рдХ, рдЕрдЧрд░ рдЙрд╕реЗ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдкрд░реАрдХреНрд╖рдг рдЪрдХреНрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдЗрд╕ рдЪрдХреНрд░ рдХреЛ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ? рджрд╕ рд╕реЗрдХрдВрдб? рджрд╕ рдорд┐рдирдЯ? рджрд╕ рджрд┐рди? рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рд░рд╕реНрдЯ рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдерд╛ред

рд╣рдореЗрдВ рдпрд╣ рд╕реНрдерд┐рддрд┐ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд▓рдЧреАред рдЬрдм рд╣рдо рдХреЛрдб рдЬрд╛рд░реА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЖрд╢реНрд╡рд╕реНрдд рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ), рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддрд╛рд▓реЗ рдХреЗ рдмрд┐рдирд╛ рд╕рдорд╛рдирд╛рдВрддрд░ рдХреЛрдб рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВред рдЯреЛрдХрд┐рдпреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рд▓реВрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ : рд╕рдорд╛рдирд╛рдВрддрд░ рдХреЛрдб рдХреЗ рдХреНрд░рдордЪрдп рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдгред рдЯреЗрд╕реНрдЯ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рдиloomрдпрд╣ рдЙрдиреНрд╣реЗрдВ рдХрдИ рдмрд╛рд░ рдЪрд▓рд╛рдПрдЧрд╛, рдирд┐рд╖реНрдкрд╛рджрди рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдПрдХ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рд╣реА рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕, рдореЗрдореЛрд░реА рдХреЛ рдлреНрд░реА рдХрд░рдиреЗ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рднреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣рд╛рдБ рдирдП рдЕрдиреБрд╕реВрдЪрдХ рдХреЗ рд▓рд┐рдП рдХрд░рдШрд╛ рдкрд░реАрдХреНрд╖рдг рд╣реИ:

 #[test] fn multi_spawn() { loom::model(|| { let pool = ThreadPool::new(); let c1 = Arc::new(AtomicUsize::new(0)); let (tx, rx) = oneshot::channel(); let tx1 = Arc::new(Mutex::new(Some(tx))); // Spawn a task let c2 = c1.clone(); let tx2 = tx1.clone(); pool.spawn(async move { spawn(async move { if 1 == c1.fetch_add(1, Relaxed) { tx1.lock().unwrap().take().unwrap().send(()); } }); }); // Spawn a second task pool.spawn(async move { spawn(async move { if 1 == c2.fetch_add(1, Relaxed) { tx2.lock().unwrap().take().unwrap().send(()); } }); }); rx.recv(); }); } 

рдпрд╣ рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмреНрд▓реЙрдХ рдореЗрдВ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ loom::modelрдХрдИ рд╣рдЬрд╛рд░реЛрдВ рдмрд╛рд░ (рд╕рдВрднрд╡рддрдГ рд▓рд╛рдЦреЛрдВ) рдЪрд▓рддрд╛ рд╣реИ, рд╣рд░ рдмрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рдеред рдкреНрд░рддреНрдпреЗрдХ рд░рди рдереНрд░реЗрдбреНрд╕ рдХрд╛ рд╕рдЯреАрдХ рдХреНрд░рдо рдмрджрд▓рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рдкрд░рдорд╛рдгреБ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рдХрд░рдШрд╛ C ++ 11 рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдореЗрдВ рдЕрдиреБрдордд рд╕рднреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдкрд░рдорд╛рдгреБ рднрд╛рд░ рдХреЗ рд╕рд╛рде Acquireрдмрд▓реНрдХрд┐ рдХрдордЬреЛрд░ рдерд╛ рдФрд░ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг loomрд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

loomрдПрдХ рдирдпрд╛ рдпреЛрдЬрдирд╛рдХрд╛рд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рдЕрдореВрд▓реНрдп рдЙрдкрдХрд░рдг рдмрди рдЧрдпрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рджрд╕ рд╕реЗ рдЕрдзрд┐рдХ рдмрдЧ рдкрдХрдбрд╝реЗ рдЬреЛ рд╕рднреА рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг, рдореИрдиреБрдЕрд▓ рдкрд░реАрдХреНрд╖рдг рдФрд░ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдХрд░ рдЧрдПред

рдПрдХ рд╕рдордЭрджрд╛рд░ рдкрд╛рдардХ рдХреЛ рд╕рдВрджреЗрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд░рдШрд╛ "рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди" рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡рд╣ рд╕рд╣реА рд╣реЛрдЧрд╛ред Naive рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдПрдХ рджрд╣рди рд╡рд┐рд╕реНрдлреЛрдЯ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред рдХреЛрдИ рднреА рдЧреИрд░-рддреБрдЪреНрдЫ рдкрд░реАрдХреНрд╖рдг рдХрднреА рдЦрддреНрдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрдИ рд╡рд░реНрд╖реЛрдВ рддрдХ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдПрдХ рджрд╣рдирд╢реАрд▓ рд╡рд┐рд╕реНрдлреЛрдЯ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рдХрд░рдШрд╛ рдмреБрдирд┐рдпрд╛рджреА рдЖрдзрд╛рд░ рдкрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЖрдВрд╢рд┐рдХ рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рдЧрддрд┐рд╢реАрд▓ рдХрдореА (рдЧрддрд┐рд╢реАрд▓ рдЖрдВрд╢рд┐рдХ-рдЖрджреЗрд╢ рдХрдореА)ред рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рдгреА рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд░рд╛рдЬреНрдп рд╕реНрдерд╛рди рдЕрднреА рднреА рдЗрддрдиреЗ рдЖрдХрд╛рд░ рддрдХ рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЙрдЪрд┐рдд рд╕рдордп (рдХрдИ рдорд┐рдирдЯ) рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реВрдо рдЖрдкрдХреЛ рдЖрдВрд╢рд┐рдХ рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рдЧрддрд┐рд╢реАрд▓ рдХрдореА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдФрд░ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХрд░рдШрд╛ рдореИрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╡реНрдпрд╛рдкрдХ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдЕрдм рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдиреБрд╕реВрдЪрдХ рдХреА рд╢реБрджреНрдзрддрд╛ рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ред

рдкрд░рд┐рдгрд╛рдо


рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╢реЗрдбреНрдпреВрд▓рд░реНрд╕ рдХреНрдпрд╛ рд╣реИрдВ рдФрд░ рдирдП рдЯреЛрдХрд┐рдпреЛ рд╢реЗрдбреНрдпреВрд▓рд░ рдиреЗ рдХреИрд╕реЗ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдкреНрд░рджрд░реНрд╢рди рдмрдврд╝рд╛рдпрд╛ рд╣реИ ... рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╣реИ? рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдирдпрд╛ рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЗрд╡рд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдпрд╣ рдЕрднреА рддрдХ рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдирдпрд╛ рд╢реЗрдбреНрдпреВрд▓рд░ рдорд╛рдЗрдХреНрд░реЛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ:

рдкреБрд░рд╛рдирд╛ рдкреНрд▓рд╛рдирд░


 рдкрд░реАрдХреНрд╖рдг chained_spawn ... рдмреЗрдВрдЪ: 2,019,796 ns / iter (+/- 302,168)
рдкрд░реАрдХреНрд╖рдг рдкрд┐рдВрдЧ_рдкреЛрдВрдЧ ... рдмреЗрдВрдЪ: 1,279,948 рдПрдирдПрд╕ / рдкреБрдирд░рд╛рд╡реГрддрд┐ (+/- 154,365)
рдкрд░реАрдХреНрд╖рдг spawn_many ... рдмреЗрдВрдЪ: 10,283,608 ns / iter (+/- 1,284,275)
рдЯреЗрд╕реНрдЯ рдпреАрд▓реНрдб_рдордиреА ... рдмреЗрдВрдЪ: 21,450,748 ns / iter (+/- 1,201,337) 

рдирдпрд╛ рдкреНрд▓рд╛рдирд░


 рдкрд░реАрдХреНрд╖рдг chained_spawn ... рдмреЗрдВрдЪ: 168,854 ns / iter (+/- 8,339)
рдкрд░реАрдХреНрд╖рдг рдкрд┐рдВрдЧ_рдкреЛрдВрдЧ ... рдмреЗрдВрдЪ: 562,659 ns / iter (+/- 34,410)
рдЯреЗрд╕реНрдЯ рд╕реНрдкреЙрди_рдордиреА ... рдмреЗрдВрдЪ: 7,320,737 ns / iter (+/- 264,620)
рдЯреЗрд╕реНрдЯ рдпреАрд▓реНрдб_рдордиреА ... рдмреЗрдВрдЪ: 14,638,563 ns / iter (+/- 1,573,678) 

рдЗрд╕ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • chained_spawn рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛, рдЕрд░реНрдерд╛рддреН, рдПрдХ рдРрд╕рд╛ рдХрд╛рд░реНрдп рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд╛рд░реНрдп рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдХрд╛рд░реНрдп рднреА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЖрджрд┐ред
  • ping_pongрдПрдХ рдЪреИрдирд▓ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ oneshotрдФрд░ рдПрдХ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕ рдЪреИрдирд▓ рдкрд░ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИред рдореВрд▓ рдХрд╛рд░реНрдп рд╕рдВрджреЗрд╢ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛" рдХреЗ рд╕рдмрд╕реЗ рдХрд░реАрдм рд╣реИред
  • spawn_many рд╢реЗрдбреНрдпреВрд▓рд░ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдЗрд╕рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рдХрд╛рд░реНрдп рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
  • yield_many рд╕реНрд╡рддрдВрддреНрд░ рдХрд╛рд░реНрдп рдЬрд╛рдЧреГрддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪред

рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдореЗрдВ рдЕрдВрддрд░ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛" рдореЗрдВ рдХреИрд╕реЗ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрдЧрд╛? рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╣рд╛рдЗрдкрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА ред

рдпрд╣рд╛рдБ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╣рд╛рдЗрдкрд░ рд╕рд░реНрд╡рд░ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИ wrk -t1 -c50 -d10:

рдкреБрд░рд╛рдирд╛ рдкреНрд▓рд╛рдирд░


 рд░рдирд┐рдВрдЧ 10s рдЯреЗрд╕реНрдЯ @ http://127.0.0.1 {000
  1 рдзрд╛рдЧреЗ рдФрд░ 50 рдХрдиреЗрдХреНрд╢рди
  рдереНрд░реЗрдб рд╕реНрдЯреИрдЯреНрд╕ рдПрдХреНрд╕рдкреНрд░реЗрд╕ Stdev Max +/- Stdev
    рд╡рд┐рд▓рдВрдмрддрд╛ 371.53us 99.05us 1.97ms 60.53%
    Req / Sec 114.61k 8.45k 133.85k 67.00%
  10.00 рдореЗрдВ 1139307 рдЕрдиреБрд░реЛрдз, 95.61MB рдкрдврд╝рд╛
рдЕрдиреБрд░реЛрдз / рд╕реЗрдХрдВрдб: 113923.19
рд╕реНрдерд╛рдирд╛рдВрддрд░рдг / рд╕реЗрдХрдВрдб: 9.56MB 

рдирдпрд╛ рдкреНрд▓рд╛рдирд░


 рд░рдирд┐рдВрдЧ 10s рдЯреЗрд╕реНрдЯ @ http://127.0.0.1 {000
  1 рдзрд╛рдЧреЗ рдФрд░ 50 рдХрдиреЗрдХреНрд╢рди
  рдереНрд░реЗрдб рд╕реНрдЯреИрдЯреНрд╕ рдПрдХреНрд╕рдкреНрд░реЗрд╕ Stdev Max +/- Stdev
    рд▓реЗрдЯреЗрдВрд╕реА 275.05us 69.81us 1.09ms 73.57%
    Req / Sec 153.17k 10.68k 171.51k 71.00%
  10.00 рдореЗрдВ 1522671 рдЕрдиреБрд░реЛрдз, 127.79MB рдкрдврд╝рд╛
рдЕрдиреБрд░реЛрдз / рд╕реЗрдХрдВрдб: 152258.70
рд╕реНрдерд╛рдирд╛рдВрддрд░рдг / рд╕реЗрдХрдВрдб: 12.78MB 

рд╣рдо рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ 34% рдХреА рд╡реГрджреНрдзрд┐ рджреЗрдЦрддреЗ рд╣реИрдВ! рдкрд╣рд▓реА рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдпрд╣ рджреЗрдЦрд╛, рддреЛ рдореИрдВ рдмрд╣реБрдд рдЦреБрд╢ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЕрдзрд┐рдХрддрдо 5-10% рдХреА рд╡реГрджреНрдзрд┐ рдХреА рдЙрдореНрдореАрдж рдереАред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореБрдЭреЗ рджреБрдЦ рд╣реБрдЖ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рдпрд╣ рднреА рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкреБрд░рд╛рдирд╛ рдЯреЛрдХрд┐рдпреЛ рд╢реЗрдбреНрдпреВрд▓рд░ рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рддрдм рдореБрдЭреЗ рдпрд╛рдж рдЖрдпрд╛ рдХрд┐ рд╣рд╛рдЗрдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА TechEmpower рд░реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдЕрдЧреНрд░рдгреА рд╣реИ ред рдпрд╣ рджреЗрдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдирдП рдпреЛрдЬрдирд╛рдХрд╛рд░ рд░реЗрдЯрд┐рдВрдЧ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдВрдЧреЗред рдирдП рдЕрдиреБрд╕реВрдЪрдХ рдХреЗ рд╕рд╛рде

рдЯреЙрдирд┐рдХ , рдЬреАрдЖрд░рдкреАрд╕реА рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдореЗрдВ рд▓рдЧрднрдЧ 10% рдХреА рддреЗрдЬреА рдЖрдИ рд╣реИ, рдЬреЛ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИ рдХрд┐ рдЯреЙрдирд┐рдХ рдЕрднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдирд╣реАрдВ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рдореИрдВ рдХрдИ рдорд╣реАрдиреЛрдВ рдХреЗ рдХрд╛рдо рдХреЗ рдмрд╛рдж рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЦреБрд╢ рд╣реВрдВред рдпрд╣ рд░рд╕реНрдЯ рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ I / O рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рд╕реБрдзрд╛рд░ рд╣реИред рдореИрдВ рдХрд┐рдП рдЧрдП рд╕реБрдзрд╛рд░реЛрдВ рд╕реЗ рдмрд╣реБрдд рдкреНрд░рд╕рдиреНрди рд╣реВрдВред рдЯреЛрдХрд┐рдпреЛ рдХреЛрдб рдореЗрдВ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдмрд╣реБрдд рдЬрдЧрд╣ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрднреА рддрдХ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд╣реИрдВред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд▓реЗрдЦ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдЙрди рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА рдЬреЛ рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдЕрдиреБрд╕реВрдЪрдХ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/hi472242/


All Articles