C ++ рдореЗрдВ Coroutines рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА

рдирдорд╕реНрддреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВред

C ++ 20 рдереАрдо рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдПрдХ рд╕рдордп рдореЗрдВ рдпреИрдВрдбреЗрдХреНрд╕ рдХреЗ рдЧрд▓рд┐рдпрд╛рд░реЗ рд╕реЗ рдПрдХ рдкреБрд░рд╛рдиреЗ (рд╕рд┐рддрдВрдмрд░ 2018) рд▓реЗрдЦ рдХреЗ рдкрд╛рд░ рдЖрдП рдереЗ, рдЬрд┐рд╕реЗ " рд╕реА ++ 20 рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдирд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХреЙрд░рдЯреАрди рдЯреАрдПрд╕ "ред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╣реБрдд рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рдордд рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ:



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

рддреЛ рдРрд╕рд╛ рд╣реБрдЖред рдмрд╣реБрдд рд╕рдВрджреЗрд╣, рд╡рд┐рд╡рд╛рдж рдФрд░ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рддреИрдпрд╛рд░реА рдХреЗ рдмрд╛рдж, WG21 рдиреЗ рдПрдХ рдЖрдо рд░рд╛рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рд╛ рдХрд┐ рдХреЛрд░ ++ рдореЗрдВ C ++ рдореЗрдВ рдХреНрдпрд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП - рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ C ++ 20 рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЪреВрдВрдХрд┐ рдпрд╣ рдПрдХ рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЕрдм (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИ, рдЕрднреА рдФрд░ рднреА рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ, рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдБ рд╣реИрдВ, рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдорд╛рдПрдБ рд╣реИрдВ ...)

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

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

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

рдХреЙрд░рдЖрдЙрдЯ рдХреНрдпрд╛ рд╣реИрдВ?


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

рдХреЛрд░рдЖрдЙрдЯ рдХреНрдпрд╛ рд╣реИрдВ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЧрдВрднреАрд░ рдЧрд▓рддрдлрд╣рдореА рд╣реИред рдЬрд┐рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЙрдиреНрд╣реЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  • рд╕реНрдЯреИрдХрд▓реЗрд╕ рдХреЛрд░рд╛рдЯрд╛рдЗрди
  • рд╕реНрдЯреИрдХ рдХреЛрд░рдЯрд╛рдЗрди
  • рд╣рд░реА рдзрд╛рд░рд╛рдПрдБ
  • рд░реЗрд╢реЗ
  • Gorutins

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

рдПрдХ рд╕рд╣рдЬ рд╕реНрддрд░ рдкрд░ рд╕рд╣рд┐рдд, рдХреЛрд░рд╛рдЙрдЯрд╛рдЗрди рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬрд╛рдиреЗрдВ рдФрд░ (рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ) "рдЕрдкрдирд╛ рдПрдкреАрдЖрдИ"ред рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдорд╛рдирдХ рддрд░реАрдХрд╛ рдХреЙрд▓ рдХрд░рдирд╛ рдФрд░ рдЦрддреНрдо рд╣реЛрдиреЗ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реИ:

void foo(){
     return; //     
}	
foo(); //   / 

рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рд░реЛрдХрдирд╛, рдпрд╛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрд╕рдВрднрд╡ рд╣реИред рдЖрдк рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдХреЗрд╡рд▓ рджреЛ рдСрдкрд░реЗрд╢рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: startрдФрд░ finishред рдЬрдм рдлрд╝рдВрдХреНрд╢рди рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╢реБрд░реВ рд╕реЗ рд╣реА рдЪрд▓реЗрдЧрд╛ред

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

def generate_nums():
     num = 0
     while True:
          yield num
          num = num + 1	

nums = generate_nums()
	
for x in nums:
     print(x)
	
     if x > 9:
          break

рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ generate_numsрдПрдХ coroutine рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ coroutine рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдиреНрдпреВрдорд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ, coroutine рд╕реНрд╡рдпрдВ рдХрд╛рд░реНрдп рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ yieldрдХреЛрдб рдореЗрдВ рдПрдХ рдХреАрд╡рд░реНрдб рдХреЗ рдмрд╛рдж рд╣реА рдЗрд╕реЗ рд░реЛрдХ рджреЗрддрд╛ рд╣реИ ; рдлрд┐рд░ рдЕрдиреБрдХреНрд░рдо рд╕реЗ рдЕрдЧрд▓рд╛ рдкреВрд░реНрдгрд╛рдВрдХ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд▓реВрдк рдХреЗ рд▓рд┐рдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЪреАрдиреА рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди next()рдХреЛ рдХреЙрд▓рдЖрдЙрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ )ред рдХреЛрдб рдПрдХ рдмреНрд░реЗрдХ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдХреЗ рд▓реВрдк рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЛрд░реБрдЯрд┐рди рдХрднреА рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрд░реБрдЯрд┐рди рдЕрдВрдд рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ рдФрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрд░рд╛рдЯрд╛рдЗрди рд▓рд╛рдЧреВ рд╕рдВрдЪрд╛рд▓рди startрдХреЗ рд▓рд┐рдП suspend, resumeрдФрд░ рдЕрдВрдд рдореЗрдВ,finishред [рдиреЛрдЯ: C ++ рднреА рд╕реГрдЬрди рдФрд░ рд╡рд┐рдирд╛рд╢ рд╕рдВрдЪрд╛рд▓рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдХреЛрд░рдЯрд╛рдЗрди рдХреА рд╕рд╣рдЬ рд╕рдордЭ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВ]ред

рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ Coroutines


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

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

рд╕реНрдЯреИрдХ рдХреЛрд░рдЯрд╛рдЗрди


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

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

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

рдЙрдкрд░реЛрдХреНрдд рдЧреБрдгреЛрдВ рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рднрд╛рд╡ рд╣реЛрддреЗ рд╣реИрдВ:

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

рдЕрдм рдЪрд▓реЛ рддрдВрддреБрдУрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдЯреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдореЗрдВ рдХреИрд╕реЗ рднрд╛рдЧ рд▓реЗрддрд╛ рд╣реИред

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

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

рдПрд╕рдкреА - рд╕реНрдЯреИрдХ рдкреЙрдЗрдВрдЯрд░
рдПрд▓рдЖрд░ - рд╕рдВрдЪрд╛рд░ рд░рдЬрд┐рд╕реНрдЯрд░
рдкреАрд╕реА - рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛рдЙрдВрдЯрд░

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

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

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



рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╕рдордп рдкреАрд╕реА рдФрд░ рдПрд▓рдЖрд░ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рддрдм рд╣реЛрддрд╛ рд╣реИ

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



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

  1. рдПрдХ рдереНрд░реЗрдб рдХреЗ рдЕрдВрджрд░ рдПрдХ рдирд┐рдпрдорд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ред рдореЗрдореЛрд░реА рд╕реНрдЯреИрдХ рдкрд░ рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред
  2. . . , . . , .
  3. .
  4. . .
  5. .
  6. .
  7. . , , , .
  8. .
  9. .
  10. тАУ , .
  11. , .
  12. . .
  13. . : , . , ( ) .
  14. , .
  15. .
  16. . . . , .
  17. .
  18. , , .

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

swtch.com/libtask
code.google.com/archive/p/libconcurrency
www.boost.org Boost.Fiber
www.boost.org рдмреВрд╕реНрдЯ

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

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ Boost.Fiber:

#include <cstdlib>
#include <iostream>
#include <memory>
#include <string>
#include <thread>
	
#include <boost/intrusive_ptr.hpp>
	
#include <boost/fiber/all.hpp>
	
inline
void fn( std::string const& str, int n) {
     for ( int i = 0; i < n; ++i) {
          std::cout << i << ": " << str << std::endl;
               boost::this_fiber::yield();
     }
}
	
int main() {
     try {
          boost::fibers::fiber f1( fn, "abc", 5);
          std::cerr << "f1 : " << f1.get_id() << std::endl;
          f1.join();
          std::cout << "done." << std::endl;
	
          return EXIT_SUCCESS;
     } catch ( std::exception const& e) {
          std::cerr << "exception: " << e.what() << std::endl;
     } catch (...) {
          std::cerr << "unhandled exception" << std::endl;
     }
     return EXIT_FAILURE;
}

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

рдЪреВрдВрдХрд┐ рдХреЛрдИ рдЕрдиреНрдп рдлрд╛рдЗрдмрд░ рдирд╣реАрдВ рд╣реИ, рдлрд╛рдЗрдмрд░ рдпреЛрдЬрдирд╛рдХрд╛рд░ рд╣рдореЗрд╢рд╛ рдХреЛрд░рдЯрд╛рдЗрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддрд╛ рд╣реИред

рд╕реНрдЯреИрдХрд▓реЗрд╕ рдХреЛрд░рд╛рдЯрд╛рдЗрди


рд╕реНрдЯреИрдХрд▓реЗрд╕ рдХреЛрд░рдЖрдЙрдЯреНрд╕ рд╕реНрдЯреИрдХ рд╡рд╛рд▓реЗ рд╕реЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдереЛрдбрд╝рд╛ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореВрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЧреИрд░-рд╕реНрдЯреИрдХ рдХрд┐рдП рдЧрдП рдХреЛрд░рдЖрдЙрдЯ рдХреЛ рднреА рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЙрдирдХреЗ рдирд┐рд▓рдВрдмрди рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ Coroutines рд╣рдореЗрдВ C ++ 20 рдореЗрдВ рдорд┐рд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдЕрдЧрд░ рд╣рдо рдХреЛрд░реБрдЯрд┐рди рдХреЗ рд╕рдорд╛рди рдЧреБрдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ - рдХреЛрд░рдЯрд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • рдХреЙрд░рдЯреАрди рдЕрдкрдиреЗ рдХреЙрд▓рд░ рдХреЗ рд╕рд╛рде рдШрдирд┐рд╖реНрда рд░реВрдк рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ: рдЬрдм рдПрдХ рдХреЛрд░рдЯрд╛рдЗрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рд╖реНрдкрд╛рджрди рдЙрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреЙрд░рдЖрдЙрдЯ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХреЙрд▓рд░ рдХреЛ рд╡рд╛рдкрд╕ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рд╕реНрдЯреИрдХ рдХреЛрд░реБрдЯрд┐рди рдХрд╛ рдЬреАрд╡рди рдХрд╛рд▓ рдЗрд╕рдХреЗ рд╕реНрдЯреИрдХ рдХреЗ рдЬреАрд╡рди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╕реНрдЯреИрдХрд▓реЗрд╕ рдХреЛрд░рдЯрд╛рдЗрди рдХрд╛ рдЬреАрд╡рдирдХрд╛рд▓ рдЙрд╕рдХреА рд╡рд╕реНрддреБ рдХреЗ рдЬреАрд╡рди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИред

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

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

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

рд╕реНрдЯреИрдХрд▓реЗрд╕ рдХреЙрд░рдЯрд┐рди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЗрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ: рд╕реНрдЯреИрдХрд▓реЗрд╕ рдХреЛрд░реБрдЯрд┐рди рдХреЛ



рдЪреБрдиреМрддреА рджреЗрдирд╛

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

  1. рдПрдХ рдирд┐рдпрдорд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдЬрд┐рд╕рдХрд╛ рдлреНрд░реЗрдо рд╕реНрдЯреИрдХ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ
  2. рдлрд╝рдВрдХреНрд╢рди рдПрдХ coroutine рдмрдирд╛рддрд╛ рд╣реИ ред рдпрд╣реА рд╣реИ, рдпрд╣ рдвреЗрд░ рдкрд░ рдХрд╣реАрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдХреНрд░рд┐рдпрдг рдлреНрд░реЗрдо рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИред
  3. рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ред
  4. рдХреЙрд░реНрдЯрд┐рди рдХреЛ рдмреБрд▓рд╛рдУ ред рдХреЛрд░реБрдЯрд┐рди рдХрд╛ рд╢рд░реАрд░ рдПрдХ рдирд┐рдпрдорд┐рдд рдвреЗрд░ рдореЗрдВ рдЦрдбрд╝рд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдп рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВред
  5. рдХреЛрд░рдЯрд╛рдЗрди рд╕реЗ рдПрдХ рдирд┐рдпрдорд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ред рдлрд┐рд░ рд╕реЗ, рд╕рдм рдХреБрдЫ рдЕрднреА рднреА рд╕реНрдЯреИрдХ рдкрд░ рд╣реЛрддрд╛ рд╣реИ [рдиреЛрдЯ: рдЖрдк рдЗрд╕ рдмрд┐рдВрджреБ рд╕реЗ coroutine рдХреЛ рд░реЛрдХ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ coroutine рдореЗрдВ рд╕рдмрд╕реЗ рдКрдкрд░реА рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ]
  6. [: .]
  7. тАУ , , .
  8. тАУ , + .
  9. 5.
  10. 6.
  11. . .

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

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

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

рдХреЛрд░реБрдЯрд┐рди рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ


C ++ рдореЗрдВ Coroutines рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреА рддрд░рд╣ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Coroutines рд╡рд░реНрддрдиреА рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдПрдЧреА:

  • рдЬрдирд░реЗрдЯрд░
  • рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдХреЛрдб
  • рдЖрд▓рд╕реА рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ
  • рдШрдЯрдирд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ

рд╕рд╛рд░рд╛рдВрд╢


рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдХрд░ рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛:

  • C ++ рдореЗрдВ рдЖрдкрдХреЛ рд╕рдорд░реНрдкрд┐рдд рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрд░рдЯрд╛рдЗрди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ
  • рд╕реНрдЯреИрдХ рдХрд┐рдП рдЧрдП рдФрд░ рд╕реНрдЯреИрдХрд▓реЗрд╕ рдХреЛрд░рдЖрдЙрдЯ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреНрдпрд╛ рд╣реИ?
  • рдХреЛрд░рдЯрд╛рдЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ

All Articles