SObjectizer-5.6.0: рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрд╡ рдХрдЯ


рддреАрд╕рд░реЗ рджрд┐рди, SObjectizer рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЙрдкрд▓рдмреНрдз рд╣реБрдЖ : 5.6.0 ред рдЗрд╕рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд┐рдЫрд▓реА рд╕реНрдерд┐рд░ рд╢рд╛рдЦрд╛ 5.5 рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреА рдЕрд╕реНрд╡реАрдХреГрддрд┐ рд╣реИ, рдЬреЛ рд╕рд╛рдврд╝реЗ рдЪрд╛рд░ рд╕рд╛рд▓ рдХреЗ рджреМрд░рд╛рди рд▓рдЧрд╛рддрд╛рд░ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣реА рд╣реИред


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


рд╣рдордиреЗ рдХрдИ рд╡рд░реНрд╖реЛрдВ рддрдХ рд╕рдВрдЧрддрддрд╛ рдХрд╛ рдЦреНрдпрд╛рд▓ рдХреНрдпреЛрдВ рд░рдЦрд╛, рдФрд░ рдлрд┐рд░ рд╕рдм рдХреБрдЫ рд▓реЗрдиреЗ рдФрд░ рддреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛? рдФрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХреНрдпрд╛ рдЯреВрдЯ рдЧрдпрд╛?


рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред


рдЖрдкрдХреЛ рдХреБрдЫ рддреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рдереА?


рдпрд╣ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реИред


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


рддреЛ рдкрд╣рд▓рд╛ рдХрд╛рд░рдг рдПрд╕рдУрдмреАрдЬреЗрдирд╛рдЗрдЬрд╝рд░ рдХреЗ рдЧрд┐рд▓реЗрдЯреНрд╕ рдХреА рдкреБрдирдГ рдЬрдЯрд┐рд▓рддрд╛ рд╣реИред


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


рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдЗрд╕рдореЗрдВ рд╣рдорд╛рд░рд╛ "рд╕реНрд╡рд╛рд░реНрде" рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рд╕реА + + рдорд╛рдирдХ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд▓рд┐рдП рдХрдо рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд╣рдорд╛рд░реЗ "рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд▓рд╛рдн" рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ред


рд▓реЗрдХрд┐рди рд╕рдордп рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ, "рд╕реНрд╡рд╛рд░реНрдереА рд╣рд┐рдд" рдЦрддреНрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ "рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд▓рд╛рдн" рд╕реЗ рдХреБрдЫ рд▓рд╛рдн рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣реЗ рд╣реИрдВред рд╢рд╛рдпрдж рд╡реЗ рд╣реЛрдВрдЧреЗ, рдЕрдЧрд░ рд╣рдо рд╕реА ++ 98 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЦреВрдиреА рдЙрджреНрдпрдо рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд▓реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдЙрди рдЬреИрд╕реЗ рдЦреВрдиреА рдЙрджреНрдпрдо, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЦреБрдж рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдФрд░ рдХреБрдЫ рдирдпрд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕ рд╕рдордп рд╕реНрдерд┐рд░ рдХрд╛ рд╕рдмрд╕реЗ рддрд╛рдЬрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд▓рд┐рдпрд╛: C ++ 17ред


рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╣рд░ рдХреЛрдИ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЖрдЦрд┐рд░рдХрд╛рд░, рдХрдИ рд╕реА ++ 17 рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдм рдПрдХ рдЕрдкреНрд░рд╛рдкреНрдп рдЕрдЧреНрд░рдгреА рдмрдврд╝рдд рд╣реИ, рдЬреЛ рдЕрднреА рднреА рдмрд╣реБрдд рджреВрд░ рд╣реИред


рдлрд┐рд░ рднреА, рд╣рдордиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЬреЛрдЦрд┐рдо рдкрд░ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╡реИрд╕реЗ рднреА, SObjectizer рдХреЛ рд▓реЛрдХрдкреНрд░рд┐рдп рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддреЗрдЬреА рд╕реЗ рдирд╣реАрдВ рдЪрд▓ рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм SObjectizer рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдорд╛рдВрдЧ рд╡рд╛рд▓рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ C ++ 17 рдЕрдм "рдЕрдЧреНрд░рдгреА рдмрдврд╝рдд" рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдмрд▓реНрдХрд┐, рдпрд╣ рд╡реИрд╕рд╛ рд╣реА рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдЕрдм C ++ 11 рдореЗрдВ рд╣реИред


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, C ++ 11 рдХреЗ рд╕рдмрд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреИрд╕рд╛рдЦреА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдордиреЗ C ++ 17 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП SObjectizer рдХреЗ рдЖрдВрддрд░рд┐рдХ рд░реАрдореЗрдХ рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд▓реЗрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдПрдХ рдЖрдзрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕ рдкрд░ SObjectizer рдЙрддреНрддрд░реЛрддреНрддрд░ рдЕрдЧрд▓реЗ рдЪрд╛рд░ рдпрд╛ рдкрд╛рдБрдЪ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


SObjectizer-5.6 рдореЗрдВ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рдЖрдпрд╛ рд╣реИ?


рдЕрдм, рдЖрдЗрдП рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд░ рдЬрд╛рдПрдВред


рдПрдЬреЗрдВрдЯ рд╕рд╣рдпреЛрдЧ рдореЗрдВ рдЕрдм рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╛рдо рдирд╣реАрдВ рд╣реИрдВ


рд╕рдорд╕реНрдпрд╛


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


рддрджрдиреБрд╕рд╛рд░, SObjectizer рдХреЛ рдкрдВрдЬреАрдХреГрдд рд╕рд╣рдпреЛрдЧ рдХреЗ рдирд╛рдореЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдкрдВрдЬреАрдХрд░рдг рдореЗрдВ рдЙрдирдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдбреЗрд░реЗрдЧреЗрдЬреЗрд╢рди, рдЖрджрд┐ рдХреЗ рджреМрд░рд╛рди рдирд╛рдо рд╕реЗ рд╕рд╣рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬреЗрдВред


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


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


рдирд┐рд░реНрдгрдп


рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рджреЛ рдореБрдЦреНрдп рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ред


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


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


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


рд╕рд╣рдпреЛрдЧ рджрд░реНрдЬ рдХрд░рддреЗ рд╕рдордп coop_handle рдХреВрдк_рд╣реИрдВрдбрд▓ рд▓реМрдЯрд╛рдпрд╛:


 auto coop = env.make_coop(); ... //    . auto coop_id = env.register_coop(std::move(coop)); // . //   coop_id    . 

рдЗрд╕ рд╕рдВрднрд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╣рдпреЛрдЧ рдХреЗ рдирд┐рдкреБрдгрддрд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:


 auto coop = env.make_coop(); ... //    . auto coop_id = env.register_coop(std::move(coop)); // . //   coop_id    . ... // - . // ,     . //       . env.deregister_coop(coop_id, ...); 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╛рддрд╛-рдкрд┐рддрд╛-рдмрдЪреНрдЪреЗ рдХреЗ рд╕рдВрдмрдВрдз рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рд╣реИрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:


 //   . auto parent = env.make_coop(); ... //  parent . auto parent_id = env.register_coop(std::move(parent)); //  . ... //      ,    . auto child = env.make_coop(parent_id); ... 

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


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


 _test.bench.so_5.parallel_parent_child -r 4 -l 7 -s 5 Configuration: roots: 4, levels: 7, level-size: 5 parallel_parent_child: 15.69s 488280 488280 488280 488280 Total: 1953120 

рдпрд╛рдиреА рд╕рдВрд╕реНрдХрд░рдг 5.6.0 ~ 15.5 рд╕реЗрдХрдВрдб рдореЗрдВ рд▓рдЧрднрдЧ 2M рд╕рд╣рдпреЛрдЧ рдХреЗ рд╕рд╛рде рдореБрдХрд╛рдмрд▓рд╛ рдХрд┐рдпрд╛ред


рдФрд░ рдпрд╣рд╛рдБ рд╕рдВрд╕реНрдХрд░рдг 5.5.24.4 рд╣реИ, рдЗрд╕ рд╕рдордп рд╢рд╛рдЦрд╛ 5.5 рдХрд╛ рдЕрдВрддрд┐рдо рднрд╛рдЧ:


 _test.bench.so_5.parallel_parent_child -r 4 -l 7 -s 5 Configuration: roots: 4, levels: 7, level-size: 5 parallel_parent_child: 46.856s 488280 488280 488280 488280 Total: 1953120 

рдПрдХ рд╣реА рдкрд░рд┐рджреГрд╢реНрдп, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо рддреАрди рдЧреБрдирд╛ рдмрджрддрд░ рд╣реИред


рдХреЗрд╡рд▓ рдПрдХ рд╣реА рддрд░рд╣ рдХреЗ рдбрд┐рд╕реНрдкреИрдЪрд░ рдмрдЪреЗ рд╣реИрдВ


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


рд╣рд╛рд▓рд╛рдБрдХрд┐, рдбрд┐рд╕реНрдкреИрдЪрд░реНрд╕ рд╕реНрд╡рдпрдВ рд╡рд┐рдХрд╕рд┐рдд, рд╡рд┐рдХрд╕рд┐рдд рдФрд░ рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдП, рдЬрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рд▓рд┐рдП SObjectizer-5.5 рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдбрд┐рд╕реНрдкреИрдЪрд░ рдмрдирд╛рдирд╛ рдФрд░ рднреА рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рдерд╛ред рд▓реЗрдХрд┐рди рдмрд╣реБрдд рддрдХрд▓реАрдлрджреЗрд╣ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕реЗ рдХреНрд░рдо рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВред


рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╕рднреА рдкреНрд░реЗрд╖рдгрдХрд░реНрддрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрд╡рд╢реНрдпрдХ рдЖрд╡реЗрджрди рдХреЗрд╡рд▓ SObjectizer рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 so_5::launch( []( so_5::environment_t & env ) { /* -   */ }, //    SObjectizer-. []( so_5::environment_params_t & params ) { p.add_named_dispatcher("active_obj", so_5::disp::active_obj::create_disp()); p.add_named_dispatcher("shutdowner", so_5::disp::active_obj::create_disp()); p.add_named_dispatcher("groups", so_5::disp::active_group::create_disp()); ... } ); 

рдореИрдВрдиреЗ рд╢реБрд░реБрдЖрдд рд╕реЗ рдкрд╣рд▓реЗ рдЖрд╡рд╢реНрдпрдХ рдбрд┐рд╕реНрдкреИрдЪрд░ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ - рд╕рдм рдХреБрдЫ, рдпрд╣ рдореЗрд░реА рдЧрд▓рддреА рд╣реИ, рдЖрдк рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗред


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


 so_5::launch( []( so_5::environment_t & env ) { ... // - . //     . env.add_dispatcher_if_not_exists( "extra_dispatcher", []{ return so_5::disp::active_obj::create_disp(); } ); }, //    SObjectizer-. []( so_5::environment_params_t & params ) {...} ); 

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


 so_5::launch( []( so_5::environment_t & env ) { ... // - . //     . env.add_dispatcher_if_not_exists( "extra_dispatcher", []{ return so_5::disp::active_obj::create_disp(); } ); //         //    . auto coop = env.create_coop( "ping_pong", //     extra_dispatcher. so_5::disp::active_obj::create_disp_binder( "extra_dispatcher" ) ); coop->make_agent< a_pinger_t >(...); coop->make_agent< a_ponger_t >(...); ... }, //    SObjectizer-. []( so_5::environment_params_t & params ) {...} ); 

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


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


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


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдирд┐рдЬреА рдбрд┐рд╕реНрдкреИрдЪрд░реНрд╕ рдбрд┐рд╕реНрдкреИрдЪрд░реЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдлрд▓ рдХрдбрд╝реА рдмрди рдЧрдП, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбрд┐рд╕реНрдкреИрдЪрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдерд╛:


 so_5::launch( []( so_5::environment_t & env ) { ... // - . //     . auto disp = so_5::disp::active_obj::create_private_disp(env); //         //    . auto coop = env.create_coop( "ping_pong", //      . disp->binder() ); coop->make_agent< a_pinger_t >(...); coop->make_agent< a_ponger_t >(...); ... }, //    SObjectizer-. []( so_5::environment_params_t & params ) {...} ); 

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


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


 so_5::launch( []( so_5::environment_t & env ) { ... // - . //     . auto disp = so_5::disp::active_obj::make_dispatcher(env); //         //    . auto coop = env.create_coop( "ping_pong", //      . disp.binder() ); coop->make_agent< a_pinger_t >(...); coop->make_agent< a_ponger_t >(...); ... }, //    SObjectizer-. []( so_5::environment_params_t & params ) {...} ); 

рдХреЗрд╡рд▓ рдирд┐: рд╢реБрд▓реНрдХ рдХрд╛рд░реНрдп рд╣реИрдВ, send_delayed рдФрд░ send_periodic рд╢реЗрд╖ рд╣реИрдВ


SObjectizer рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП API рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ SObjectizer рдиреЗ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрд▓рдмреНрдз рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдореЗрдВ C ++ 11 рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрд╕реЗ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рд╣реИред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рдВрджреЗрд╢ рдЗрд╕ рддрд░рд╣ рднреЗрдЬреЗ рдЧрдП:


 mbox->deliver_message(new my_message(...)); 

рдпрд╛, рдпрджрд┐ рдЖрдк "рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдХреБрддреНрддрд╛ рдкреНрд░рдЬрдирдХреЛрдВ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ" рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ (рдЧ):


 std::unique_ptr<my_message> msg(new my_message(...)); mbox->deliver_message(std::move(msg)); 

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


 send<my_message>(target, ...); 

рд╕рдЪ рд╣реИ, рдПрдХ рдкреВрд░реЗ рдкрд░рд┐рд╡рд╛рд░ рдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг send рд╕реЗ send_to_agent рдХреБрдЫ рд╕рдордп рд▓рдЧрд╛, рдЬрд┐рд╕рдореЗрдВ send_to_agent , send_delayed_to_agent , рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдФрд░ рдлрд┐рд░, рдЗрд╕ рдкрд░рд┐рд╡рд╛рд░ рдХреЛ send , send_delayed рдФрд░ send_periodic рдХреЗ рдкрд░рд┐рдЪрд┐рдд рд╕реЗрдЯ рдХреЛ рд╕рдВрдХреАрд░реНрдг рдмрдирд╛рдиреЗ рдХреЗ send ред


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


рд▓реЗрдХрд┐рди рд╕рдВрд╕реНрдХрд░рдг 5.6.0 рдореЗрдВ, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ SObjectizer API рдореЗрдВ рдХреЗрд╡рд▓ рдореБрдлреНрдд send , send_delayed рдФрд░ send_periodic рдлрд╝рдВрдХреНрд╢рди рд╕рд╣реЗрдЬреЗ рдЧрдП рдереЗред рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдпрд╛ рддреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдЖрдВрддрд░рд┐рдХ SObjectizer рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдЗрд╕рд▓рд┐рдП SObjectizer-5.6 рдореЗрдВ, рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрдВрдд рдореЗрдВ рд╡рд╣реА рдмрди рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЕрдЧрд░ рд╣рдо рд╢реБрд░реВ рд╕реЗ рд╣реА рд╕рд╛рдорд╛рдиреНрдп C ++ 11 рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рдХ рдереЗред рдареАрдХ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рд╕реА ++ 11 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдерд╛ред


рдПрдХрд▓ рдкреНрд░рд╛рд░реВрдк send_delayed рдФрд░ send_periodic


send_delayed рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ send_delayed рдФрд░ send_periodic рдХреЗ рд╕рд╛рде, рдПрдХ рдФрд░ рдШрдЯрдирд╛ рдереАред


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


 send_delayed<my_message>(target_agent, pause, ...); send_delayed<my_message>(target_mchain, pause, ...); 

Mbox рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рд╕реЗ SObjectizer рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рд▓рд┐рдВрдХ рд▓реЗрдирд╛ рдерд╛:


 send_delayed<my_message>(this->so_environment(), target_mbox, pause, ...); 

send_delayed рдФрд░ send_periodic рдХреА рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рдорд╛рдореВрд▓реА send_periodic рдереАред рдЬреЛ рдЗрддрдирд╛ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред рдФрд░ рдпрд╣ рд╕рдм рдЗрд╕рд▓рд┐рдП рдХрд┐ рд╢реБрд░реВ рдореЗрдВ рд╣рдордиреЗ SObjectizer Environment рдХреЗ рд▓рд┐рдВрдХ рдХреЛ mbox-ahs рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ред


рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдЗрд╕ рдХрд┐рд░рдЪ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рдерд╛ред


рдЕрдм рдЖрдк mbox рд╕реЗ рдпрд╣ рдкрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ SObjectizer рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рдЗрд╕рд╕реЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯрд╛рдЗрдорд░ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХрд▓ send_delayed рдФрд░ send_periodic рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛:


 send_delayed<my_message>(target_agent, pause, ...); send_delayed<my_message>(target_mchain, pause, ...); send_delayed<my_message>(target_mbox, pause, ...); 

рд╢рд╛рдмреНрджрд┐рдХ рдЕрд░реНрде рдореЗрдВ, "рдПрдХ рддрд┐рдкрд╣рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫрд╛ рд╣реИред"


рдХреЛрдИ рдФрд░ рдЕрдзрд┐рдХ рддрджрд░реНрде рдПрдЬреЗрдВрдЯ рдирд╣реАрдВ


рдЬреИрд╕рд╛ рдХрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, "рд╣рд░ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдкрд╣рд▓рд╛ рдирд╛рдо, рдордзреНрдп рдирд╛рдо рдФрд░ рдЕрдВрддрд┐рдо рдирд╛рдо рд╣реЛрддрд╛ рд╣реИред" рддрджрд░реНрде рдПрдЬреЗрдВрдЯреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдирд╛рдо, рдордзреНрдп рдирд╛рдо рдФрд░ рдЕрдВрддрд┐рдо рдирд╛рдо рд╣реИ :(


рдмрд╛рдд рдпрд╣ рд╣реИред рдЬрдм рд╣рдордиреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ SObjectizer-5 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рд╣рдордиреЗ SObjectizer рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рд╢рдмреНрджрд╛рд╡рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ reproaches рд╕реБрдиреЗред рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдпрд╣ рд╡рд╛рдЪрд╛рд▓рддрд╛ рдореБрдЭреЗ рдПрдХ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛ рд▓рдЧ рд░рд╣реА рдереА рдЬрд┐рд╕рд╕реЗ рдореБрдЭреЗ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рд╡рд░реНрдмреЛрд╕рд┐рдЯреА рдХрд╛ рдПрдХ рд╕реНрд░реЛрдд рд╡рд┐рд╢реЗрд╖ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░ agent_t рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдЬреЗрдВрдЯреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдЗрд╕рд╕реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХреЛрдИ рдмрдЪ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рдирд╣реАрдВ?


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


 auto pinger = coop->define_agent(); auto ponger = coop->define_agent(); pinger .on_start( [ponger]{ so_5::send< msg_ping >( ponger ); } ) .event< msg_pong >( pinger, [ponger]{ so_5::send< msg_ping >( ponger ); } ); ponger .event< msg_ping >( ponger, [pinger]{ so_5::send< msg_pong >( pinger ); } ); 

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


рдЗрд╕рд▓рд┐рдП SObjectizer-5 рдореЗрдВ рдирд┐рдпрдорд┐рдд рдФрд░ рддрджрд░реНрде рдПрдЬреЗрдВрдЯреЛрдВ рдореЗрдВ рдЕрд▓рдЧрд╛рд╡ рдерд╛ред


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


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


рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдЬреЛ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдЙрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рдиреА рдмрд░рддрдиреА рдЪрд╛рд╣рд┐рдПред рдФрд░ рдЖрдк рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рдлрд┐рд░ рдзреНрдпрд╛рди рд╕реЗ) рдХреЗрд╡рд▓ рдЗрд╕ рд╢рд┐рд░рд╛ рдореЗрдВ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ: "рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕рд╛рдзрди рдкрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдореБрдЭреЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдпрд╣рд╛рдБ рдХрд┐рддрдирд╛ рдХреЛрдб рдорд┐рд▓рд╛ред" рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдРрд╕реА рдЗрдЪреНрдЫрд╛рдУрдВ рдХреЛ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: "рдореИрдВ рдЖрдкрдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд▓реЗ рдЬрд╛рдКрдВрдЧрд╛ рдпрджрд┐ рдпрд╣ рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред"


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


SObjectizer-5.6 рдЕрдм рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдПрдЬреЗрдВрдЯ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ


рдПрдЬреЗрдВрдЯреЛрдВ рдХреЗ рдмреАрдЪ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХреА рдЧрдИ рдмрд╛рддрдЪреАрдд рдХрд╛ рд╡рд┐рд╖рдп рдмрд╣реБрдд рдкреБрд░рд╛рдирд╛ рдФрд░ рдкреАрдбрд╝рд╛рджрд╛рдпрдХ рд╣реИред


рдпрд╣ SObjectizer-4 рдХреЗ рджрд┐рдиреЛрдВ рдореЗрдВ рд╢реБрд░реВ рд╣реБрдЖред рдФрд░ SObjectizer-5 рдореЗрдВ рдЬрд╛рд░реА рд░рд╣рд╛ред рдЕрдм рддрдХ, рдЕрдВрдд рдореЗрдВ, рддрдерд╛рдХрдерд┐рдд рд╕реЗрд╡рд╛ рдЕрдиреБрд░реЛрдз ред рдЬреЛ рд╢реБрд░реВ рдореЗрдВ, рдмреЗрд╢рдХ, рдореМрдд рдХреЗ рд░реВрдк рдореЗрдВ рдбрд░рд╛рд╡рдирд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рд╕рднреНрдп рд░реВрдк рджреЗрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред


рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╣реА рдорд╛рдорд▓рд╛ рдирд┐рдХрд▓рд╛ рдЬрдм рдкрд╣рд▓рд╛ рдкреИрдирдХреЗрдХ рдЧреБрдирдЧреБрдирд╛ рдЖрдпрд╛ :(


SObjectizer рдХреЗ рдЕрдВрджрд░, рдореБрдЭреЗ рдПрдХ рддрд░рд╣ рд╕реЗ рдирд┐рдпрдорд┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╡рд┐рддрд░рдг рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдерд╛, рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╡рд┐рддрд░рдг рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд░рдирд╛ рдерд╛ред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджреБрдЦрдж рд╣реИ рдХрд┐ рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ mbox-s рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред


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


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, SObjectizer рдХреЗ рд░рдЦрд░рдЦрд╛рд╡ / рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде, рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рд┐рд░рджрд░реНрдж рдерд╛ред рдЗрддрдирд╛ рдЕрдзрд┐рдХ рдХрд┐ рдкрд╣рд▓реЗ рддреЛ рдЗрди рдмрд╣реБрдд рд╣реА рд╕рдордХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдареЛрд╕ рдЗрдЪреНрдЫрд╛ рдереАред рдФрд░ рддрдм рдЗрд╕ рдЗрдЪреНрдЫрд╛ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖред


рдФрд░ рдЗрд╕рд▓рд┐рдП SObjectizer-5.6 рдореЗрдВ, рдПрдЬреЗрдВрдЯ рдХреЗрд╡рд▓ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдФрд░ рдЪреВрдВрдХрд┐ рдХрдИ рдмрд╛рд░ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬ рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


 //    "-". using my_request_reply = so_5::extra::sync::request_reply_t<my_request, my_reply>; ... //  ,    . class request_handler final : public so_5::agent_t { ... //  .      . void on_request(typename my_request_reply::request_mhood_t cmd) { ... //  . //      cmd->request(). //   . cmd->make_reply(...); //      my_reply. } ... void so_define_agent() override { //       . so_subscribe_self().event(&request_handler::on_request); } }; ... //     . so_5::mbox_t handler_mbox = ...; //        15s. //    ,    . my_reply reply = my_request_reply::ask_value(handler_mbox, 15s, ...); //       my_request. 

рдпрд╛рдиреА рдЕрдм рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмреБрдирд┐рдпрд╛рджреА рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рд╣реИрдВрдбрд▓рд░ рд╡рд┐рдзрд┐ рд╕реЗ рдПрдХ рдорд╛рди рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдерд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, make_reply рд╡рд┐рдзрд┐ рдХрд╛ make_reply ред


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


рдФрд░, рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ, рдирдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдиреЗ рд╣рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬреЛ рдкрд╣рд▓реЗ рдЕрдкреНрд░рд╛рдкреНрдп рдереА:


  • рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ (рдпрд╛рдиреА request_reply_t<Request, Reply> рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕) рдХреЛ рдЕрдм рд╕реЗрд╡ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ / рдпрд╛ рджреВрд╕рд░реЗ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЛ рдлреЙрд░рд╡рд░реНрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рднрд╛рд░ рд╕рдВрддреБрд▓рди рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ;
  • рдЖрдк рдЕрдиреБрд░реЛрдз рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдЬреЗрдВрдЯ рдХреЗ рдирд┐рдпрдорд┐рдд mbox рдореЗрдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЖрд░рдВрдн рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдЬреЗрдВрдЯ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдВрджреЗрд╢ рдХреА рддрд░рд╣, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛;
  • рдЖрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдХрдИ рдЕрдиреБрд░реЛрдз рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХреНрд░рдо рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 using first_dialog = so_5::extra::sync::request_reply_t<first_request, first_reply>; using second_dialog = so_5::extra::sync::request_reply_t<second_request, second_reply>; //         . auto reply_ch = create_mchain(env); //     . first_dialog::initiate_with_custom_reply_to( one_service, reply_ch, so_5::extra::sync::do_not_close_reply_chain, ...); second_dialog::initiate_with_custom_reply_to( another_service, reply_ch, so_5::extra::sync::do_not_close_reply_chain, ...); //    . receive(from(reply_ch).handle_n(2).empty_timeout(15s), [](typename first_dialog::reply_mhood_t cmd) {...}, [](typename second_dialog::reply_mhood_t cmd) {...}); 

рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрд╕рдУрдмреАрдЬреЗрдирд╛рдЗрдЬрд░ рдореЗрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реБрдЖ:


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

рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреА рдЧрд▓рддрд┐рдпреЛрдВ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ред


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


рдЗрд╕ рд▓реЗрдЦ рдиреЗ, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, SObjectizer-5.6.0 рдореЗрдВ рдХрдИ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдФрд░ рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдкреАрдЫреЗ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреАред


рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ ред


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


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


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


рдкреБрдирд╢реНрдЪред рдЖрдк рдЗрд╕ Google рд╕рдореВрд╣ рдореЗрдВ SObjectizer рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╛рдЪрд╛рд░реЛрдВ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╣рд╛рдВ рдЖрдк SObjectizer рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред

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


All Articles