рдорд╛рдЙрдВрдЯ: рднрд╛рд░реА рд▓реЛрдб рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реА рднрд╛рд╖рд╛

рдЕрднрд┐рд╡рд╛рджрди, рдЦрдмреНрд░реЛрд╡рд┐рддреНрд╕!



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



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



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



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



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



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



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



рдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рд╕реА ++ рдореЗрдВ рдХреЛрдб рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдорд╛рдЙрдВрдЯ рдореЗрдВ рдмрд░рд╛рдмрд░ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рд╣рд╕рдВрдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред



1. рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореНрдпреВрдЯреЗрдХреНрд╕ рдирд┐рдпрдВрддреНрд░рдг



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



class MyFrontend

{

private :

Mutex state_mutex ;

unsigned num_requests ;



public :

void processRequest ( )

{

state_mutex. lock ( ) ;

++ num_requests ;

state_mutex. unlock ( ) ;

}

} ;








рдорд╛рдЙрдВрдЯ рдореИрдиреБрдЕрд▓ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ:



async object MyFrontend

{

private :

unsigned num_requests ;



public :

async void processRequest ( )

{

++ num_requests ;

}

} ;








async рдСрдмреНрдЬреЗрдХреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд░реНрдЧ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реИред рдРрд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рджрд┐рдП рдЧрдП рдорд╛рдЙрдВрдЯ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдХреЛ рджрд┐рдП рдЧрдП C ++ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд░рд╛рдмрд░ рдХреЛрдб рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



рдЕрдм рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, MyFrontend рдХреЛ MyBackend рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ doSomething () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕реЗ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ num_back рдмреИрдХрдПрдВрдб рдПрдХреНрд╕реЗрд╕ рдХрд╛рдЙрдВрдЯрд░ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЧрддрд┐рд░реЛрдз рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ MyBackend рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ State_mutex рдХреЛ рдЦрд╛рд▓реА рдХрд░рдирд╛ рд╣реЛрдЧрд╛:



class MyFrontend

{

private :

Mutex state_mutex ;

unsigned num_requests ;

unsigned num_back ;

MyBackend * backend ;



public :

void processRequest ( )

{

state_mutex. lock ( ) ;

++ num_back ;

unsigned tmp_num_back = tmp_num_back ;

state_mutex. unlock ( ) ;



backend - > doSomething ( tmp_num_back ) ;



state_mutex. lock ( ) ;

++ num_requests ;

state_mutex. unlock ( ) ;

}

} ;








рдорд╛рдЙрдВрдЯ рдкрд░ рдПрдХ рд╣реА рдмрд╛рдд:



async object MyFrontend

{

private :

unsigned num_requests ;

unsigned num_back ;

MyBackend * backend ;



public :

async void processRequest ( )

{

call backend - > doSomething ( ++ num_back ) ;

++ num_requests ;

}

} ;








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



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



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

рдмрдЪрд╛ рд▓рд┐рдпрд╛ред



2. рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╢реНрд░реГрдВрдЦрд▓рд╛рдПрдВ



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



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



рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо:
  1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (check_auth) рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рд░реНрд╡рд░ рдкрд░ рдХреБрдХреА рдХреБрдХреА рднреЗрдЬреЗрдВ;
  2. рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдорд┐рддреНрд░ (check_friends) рд╣реИрдВ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдЬрд┐рдХ рдЧреНрд░рд╛рдлрд╝ рдкрд░реЛрд╕рдиреЗ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВ;
  3. рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЗрдЯрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА (get_userinfo) рдХреЗ рд▓рд┐рдП рдлрд╝реЛрдЯреЛ рд╕реНрд╡рд╛рдореА рдХреЛ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВ;
  4. Check_friends рдФрд░ get_userinfo рд╕реЗ рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ HTML рдкреГрд╖реНрда рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреЗрдЬреЗрдВред
рдСрдкрд░реЗрд╢рди 2 рдЕрдиреБрд░реЛрдз рдХреЗ рдЬрд╡рд╛рдм рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдиреБрд░реЛрдз 3 рдЕрдиреБрд░реЛрдз 1 рдФрд░ 2 рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдЙрдирдХреЗ рд╕рд╛рде рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред



рдЪрд▓реЛ рд╕реА рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕реНрдХреЗрдЪ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреА рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдирдХрд╛ рдХрд╛рдо рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рд╣реИ рдХрд┐ рдЗрддрдиреА рд╕рд░рд▓ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдореИрдиреБрдЕрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд┐рддрдирд╛ рдмреЛрдЭрд┐рд▓ рд╣реИ:



// .

typedef struct {

// "" , .

MReferenced parent_referenced ;

// .

MMutex state_mutex ;



uint64_t owner_id ;

uint32_t photo_id ;



// 'true', .

bool cancel ;



// get_userinfo?

bool got_userinfo ;

// ( ).

uint32_t owner_carma ;



// check_friends?

bool got_friends ;

} HttpPhotoData ;



static void http_photo_data_init ( HttpPhotoData * data )

{

m_referenced_init ( ( MReferenced * ) data ) ;

m_mutex_init ( & data - > state_mutex ) ;



data - > cancel = false ;

data - > got_userinfo = false ;

data - > got_friends = false ;

}



static void http_photo__get_userinfo_ret ( uin32_t owner_carma,

void * _data ) ;



static void http_photo__check_auth_ret ( uint64_t client_id,

void * _data ) ;



static void http_photo__end ( HttpPhotoData * data ) ;



// .

void http_photo ( char * cookie_str,

uint64_t owner_id,

uint32_t photo_id )

{

HttpPhotoData * data = m_malloc ( sizeof ( HttpPhotoData ) ) ;

http_photo_data_init ( data ) ;



data - > owner_id = owner_id ;

data - > photo_id = photo_id ;



{

m_referenced_ref ( ( MReferenced * ) data ) ;



MCallbackDesc cb ;

m_callback_desc_init_refdata ( & cb, http_photod__get_userinfo_ret, data ) ;



get_userinfo ( & cb, owner_id ) ;

}



{

m_referenced_ref ( ( MReferenced * ) data ) ;



MCallbackDesc cb ;

m_callback_desc_init_refdata ( & cb, http_photod__check_auth_ret, data ) ;



check_auth ( & cb, cookie_str ) ;

}



m_referenced_unref ( ( MReferenced * ) data ) ;

}



// get_userinfo.

static void http_photo__get_userinfo_ret ( uint32_t owner_carma,

void * _data )

{

HttpPhotoData * data = ( HttpPhotoData * ) _data ;



m_mutex_lock ( & data - > state_mutex ) ;



if ( data - > cancel ) {

m_mutex_unlock ( & data - > state_mutex ) ;

return ;

}



data - > owner_carma = owner_carma ;

data - > got_userinfo = true ;



if ( data - > got_friends ) {

// , .

http_photo_end ( data ) ;

}



m_mutex_unlock ( & data - > state_mutex ) ;

}



// check_auth.

static void http_photo__check_auth_ret ( uint64_t client_id,

void * _data )

{

HttpPhotoData * data = ( HttpPhotoData * ) _data ;



m_referenced_ref ( ( MReferenced * ) data ) ;



MCallbackDesc cb ;

m_callback_desc_init_refdata ( & cb, http_photo__check_friends_ret, data ) ;



check_friends ( & cb, client_id, data - > owner_id ) ;

}



// check_friends.

static void http_photo__check_friends_ret ( bool friends,

void * _data )

{

HttpPhotoData * data = ( HttpPhotoData * ) _data ;



m_mutex_lock ( & data - > state_mutex ) ;

if ( data - > cancel ) {

m_mutex_unlock ( & data - > state_mutex ) ;

return ;

}



data - > got_friends = true ;



if ( ! friends ) {

// . .

data - > cancel = true ;

m_mutex_unlock ( & data - > state_mutex ) ;

return ;

}



if ( data - > got_userinfo ) {

// , .

http_photo_end ( data ) ;

}



m_mutex_unlock ( data - > state_mutex ) ;

}



// .

static void http_photo_end ( HttpPhotoData * data )

{

photo_send_page ( data - > owner_id, data - > photo_id, data - > owner_carma ) ;

}








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



рдорд╛рдЙрдВрдЯ рдкрд░ рд╕рдорддреБрд▓реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:



async chain void http_photo ( char * cookie_str,

uint64_t owner_id,

uint32_t photo_id )

{

async call GetUserinfoCall get_userinfo ( owner_id ) ;



async call check_auth ( cookie ) ;

gives uint64_t client_id ;



async call check_friends ( client_id, owner_id )

gives bool friends ;



if ( ! friends ) {

//

return ;

}



GetUserinfoCall gives uint32_t owner_carma ;



// HTTP- .

photo_send_page ( owner_id, photo_id, owner_carma ) ;

}








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



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



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



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



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



async chain void search ( int key )

{

for ( int i = 0 ; i < 3 ; i ++ ) {

async call search_cache ( key, i /* cache id */ )

gives int value ;



if ( value > 0 ) {

printf ( "VALUE: %d \n " , value ) ;

break ;

}

}

}








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



3. рдПрдиреЛрдЯреЗрд╢рди



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

int * $nonnull ptr ; // NULL

MyObject * $heap myobj ; //








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



4. рдЙрдзрд╛рд░ рд╕реА + + рд╕реБрд╡рд┐рдзрд╛рдПрдБ



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



рдЗрд╕реА рд╕рдордп, рдирд╛рдо рдЕрдзрд┐рднрд╛рд░ рднрд╛рд╖рд╛ рдХреА рдПрдХ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╕рдВрдкрддреНрддрд┐ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреЛ рднрд╛рд╖рд╛ рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдиреЗ рдЗрд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ FAQ рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрдердХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╣реИ ред



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



5. рд▓рд┐рдВрдХ рдФрд░ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ



рдСрдкрд░реЗрдЯрд░ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдорд╛рдЙрдВрдЯ рдореЗрдВ "рд╕реНрдорд╛рд░реНрдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕" рдХреЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдПрдирд╛рд▓реЙрдЧреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдмрдирд╛ рджреЗрддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ std :: auto_ptr рдФрд░ boost :: shared_ptrред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рднрд╛рд╖рд╛ рд╕реНрддрд░ рдкрд░ рдПрдХ рд▓рд┐рдВрдХ рдЧрд┐рдирддреА рддрдВрддреНрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ:

int @a ; //

int @@b ; //








рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рд╕рд░рд▓ рд╕рдВрджрд░реНрдн рдЧрд┐рдирддреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд▓рд┐рдВрдХ рдХрд╛рдЙрдВрдЯрд░ рдмрд┐рд▓реНрдЯ-рдЗрди

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



рдСрдкрд░реЗрдЯрд░ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдорд╛рдЙрдВрдЯ рдореЗрдВ рд╕реА ++ рд▓рд┐рдВрдХ (рдлреЙрд░реНрдо рдЗрдВрдЯ & рдП) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред



рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рднрд╛рд╖рд╛ рдХреЗ рд╕реНрддрд░ рдкрд░ рд▓рд┐рдВрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдЖрдк C ++ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкрд░ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рд╕реЗ рдЕрдзрд┐рдХ рдкреВрд░реНрдг рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрдВрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



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



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



рдорд╛рдЙрдВрдЯ рднрд╛рд╖рд╛ рдЕрдиреБрд╡рд╛рджрдХ рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдпрд╣ C ++ рднрд╛рд╖рд╛ рдХреЗ рдкрд╛рд░реНрд╕рдЯрд░ рдХреЗ рдПрдХ рдЙрдкрд╕рдореБрдЪреНрдЪрдп рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рд╣реИ рдФрд░ рдХрд╛рдордХрд╛рдЬреА рдирд╛рдо " рд╕реНрдХреНрд░реВрдлреА " рдХреЗ рддрд╣рдд svn рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА mync.svn.sourceforge.net/svnroot/mync/trunk рдореЗрдВ рд░рд╣рддрд╛ рд╣реИред



рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ C / C ++ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдХреБрдЫ рдЧреБрдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рдмрджрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ, рддреЛ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЖрд╡рд╛рдЬрд╝ рджреЗрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ: рд╢рд╛рдпрдж рдЙрдирдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред



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



рд╕рд╛рде рдореЗрдВ рд╣рдо рдФрд░ рдЕрдзрд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!



рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред



All Articles