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

рдЧреЛ рдореЗрдВ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдХрд╛ рдкрд░рд┐рдЪрдп
рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рд╛рде рдпрд╛ рдЫрджреНрдо-рд╕рдорд╛рдирд╛рдВрддрд░ рдлреИрд╢рди рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╕реНрд╡рддрдВрддреНрд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдВрдЧрдарди рд╣реИред рдХреЙрдиреНрдХрд░реЗрдВрд╕реА рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдПрдХ рдореВрд▓рднреВрдд рдкрд╣рд▓реВ рд╣реИ, рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдорд▓реНрдЯреАрдХреЛрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдкреВрд░реА рдХреНрд╖рдорддрд╛ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ, рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЬрдЯрд┐рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред
рдЧреЛ, рдЬрд┐рд╕реЗ рдЧреЛрд▓рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ , рдПрдХ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рдХреА рдЧрдИ, рд╕рдВрдХрд▓рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕рд░рд▓рддрд╛ рдФрд░ рджрдХреНрд╖рддрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдХрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдореЙрдбрд▓ рдЯреЛрдиреА рд╣реЛрд░реЗ рдХреА рд╕рдВрдЪрд╛рд░ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ (рд╕реАрдПрд╕рдкреА) рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реИ, рдПрдХ рдФрдкрдЪрд╛рд░рд┐рдХрддрд╛ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд╕рдВрджреЗрд╢-рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓реЗ рдЪреИрдирд▓реЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╕реНрд╡рддрдВрддреНрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрддреА рд╣реИред рдЧреЛ рдореЗрдВ рд╕рдВрдЧрд╛рдорд┐рддрд┐ goroutines, рдЪреИрдирд▓реЛрдВ рдФрд░ 'рдЪрдпрди' рдХрдерди рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рдЗрд░реНрдж-рдЧрд┐рд░реНрдж рдШреВрдорддреА рд╣реИред
рдпреЗ рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рд╕рдЯреАрдХ рд╕рдВрдЪрд╛рд░ рдФрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдЖрд╕рд╛рдиреА рдФрд░ рдиреНрдпреВрдирддрдо рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЕрддреНрдпрдзрд┐рдХ рд╕рдорд╡рд░реНрддреА рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред AppMaster рдореЗрдВ, рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рджреГрд╢реНрдп рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрд░реЛрдд рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд╕реНрдХреЗрд▓реЗрдмрд▓, рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рдмреИрдХрдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП Go рдХреЗ рдХреЙрдиреНрдХрд░реЗрдВрд╕реА рдореЙрдбрд▓ рдХреА рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЧреЛрд░реЛрдЯрд┐рдиреНрд╕: рдж рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХреНрд╕ рдСрдлрд╝ рдХреЙрдиреНрдХрд░реЗрдВрд╕реА
рдЧреЛ рдореЗрдВ, рд╕рдВрдЧрд╛рдорд┐рддрд┐ goroutines рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдЧреЛ рд░рдирдЯрд╛рдЗрдо рд╢реЗрдбреНрдпреВрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рд╣рд▓реНрдХреЗ рдереНрд░реЗрдб рдЬреИрд╕реА рд╕рдВрд░рдЪрдирд╛рдПрдВред OS рдереНрд░реЗрдбреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЧреЛрд░рдЖрдЙрдЯреНрд╕ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╕рд╕реНрддреЗ рд╣реИрдВ, рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рднрд╛рд░реА рдХрд┐рдП рдмрд┐рдирд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рдЬрд╛рд░реЛрдВ рдпрд╛ рд▓рд╛рдЦреЛрдВ рдХреЛ рдПрдХ рд╣реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд╕реНрдкреЙрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЧреЛрд░реЛрдЗрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ 'рдЧреЛ' рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдХрд░реЗрдВред рдордВрдЧрд▓рд╛рдЪрд░рдг рдкрд░, рдлрд╝рдВрдХреНрд╢рди рд╢реЗрд╖ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рде рд╕рдорд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдЧрд╛:
func printMessage(message string) { fmt.Println(message) } func main() { go printMessage("Hello, concurrency!") fmt.Println("This might print first.") }
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореБрджреНрд░рд┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдХреНрд░рдо рдирд┐рдпрддрд╛рддреНрдордХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рд╕рдВрджреЗрд╢ рдкрд╣рд▓реЗ рд╕реЗ рдкрд╣рд▓реЗ рдореБрджреНрд░рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ goroutines рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЪрд▓рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдЖрджреЗрд╢ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИред рдЧреЛ рд░рдирдЯрд╛рдЗрдо рд╢реЗрдбреНрдпреВрд▓рд░ рдЧреЛрд░реЛрдЗрди рдХреЗ рдкреНрд░рдмрдВрдзрди рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рд╡реЗ рд╕реАрдкреАрдпреВ рдЙрдкрдпреЛрдЧ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддреЗ рд╣реБрдП рд╕рдорд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВред рдЧреЛ рдХрд╛ рдЕрдиреБрд╕реВрдЪрдХ рдПрдХ рдХрд╛рд░реНрдп-рдЪреЛрд░реА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд╣рдХрд╛рд░реА рд░реВрдк рд╕реЗ рдЧреЛрд░реЛрдЗрди рдХреЛ рд╢реЗрдбреНрдпреВрд▓ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЙрдкрдпреБрдХреНрдд рд╣реЛ, рдЬреИрд╕реЗ рдХрд┐ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдШрдЯрдирд╛рдУрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╕рдордп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ goroutines, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрд╢рд▓, рд▓рд╛рдкрд░рд╡рд╛рд╣реА рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдерд┐рд░рддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рдВрд╕рд╛рдзрди рд░рд┐рд╕рд╛рд╡ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЧреЛрд░реЛрдЗрди рдХреЗ рдЬреАрд╡рдирдЪрдХреНрд░ рдХреЛ рдЯреНрд░реИрдХ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдХрд┐рд╕реА рднреА рд╕рдордп рд╕рдХреНрд░рд┐рдп goroutines рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрд░ рдкреВрд▓ рдЬреИрд╕реЗ рдирд┐рдпреЛрдЬрд┐рдд рдкреИрдЯрд░реНрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЪреИрдирд▓: рдЧреЛрд░реМрдЯрд╛рдЗрдиреНрд╕ рдХреЗ рдмреАрдЪ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рдФрд░ рд╕рдВрдЪрд╛рд░ рдХрд░рдирд╛
рдЪреИрдирд▓ рдЧреЛ рдХреЗ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдореЙрдбрд▓ рдХрд╛ рдПрдХ рдореВрд▓рднреВрдд рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЧреЛрд░реЛрдЗрди рдХреЛ рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдЪреИрдирд▓ рдЧреЛ рдореЗрдВ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреЗ рдореВрд▓реНрдп рд╣реИрдВ рдФрд░ рдХреНрд╖рдорддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рдмрдлрд░ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде 'рдореЗрдХ' рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
// Unbuffered channel ch := make(chan int) // Buffered channel with a capacity of 5 bufCh := make(chan int, 5)
рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдлрд╝рд░реНрдб рдЪреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрддрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реБрдП, рдЪреИрдирд▓ рдореЗрдВ рдХрдИ рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдпрд╣ рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдереНрд░реВрдкреБрдЯ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЧрддрд┐рд░реЛрдз рдпрд╛ рдЕрдиреНрдп рддреБрд▓реНрдпрдХрд╛рд▓рди рдореБрджреНрджреЛрдВ рдХреЛ рдкреЗрд╢ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪреИрдирд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореВрд▓реНрдп рднреЗрдЬрдирд╛ '<-' рдСрдкрд░реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
// Sending the value 42 through the channel ch <- 42 // Sending values in a for loop for i := 0; i < 10; i++ { ch <- i }
рдЗрд╕реА рддрд░рд╣, рдЪреИрдирд▓реЛрдВ рд╕реЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕реА '<-' рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреИрдирд▓ рдХреЗ рд╕рд╛рде рджрд╛рдИрдВ рдУрд░:
// Receiving a value from the channel value := <-ch // Receiving values in a for loop for i := 0; i < 10; i++ { value := <-ch fmt.Println(value) }
рдЪреИрдирд▓ рд╕рдВрдЪрд╛рд░ рдФрд░ рддреБрд▓реНрдпрдХрд╛рд▓рди goroutines рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд▓реЗрдХрд┐рди рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЪреИрдирд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рд╛рдЭрд╛-рдореЗрдореЛрд░реА рдореЙрдбрд▓ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдиреБрдХрд╕рд╛рди рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдбреЗрдЯрд╛ рд░реЗрд╕ рдФрд░ рдЕрдиреНрдп рд╕рдорд╡рд░реНрддреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореБрджреНрджреЛрдВ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рджреЛ рд╕рдорд╡рд░реНрддреА рдХрд╛рд░реНрдп рджреЛ рд╕реНрд▓рд╛рдЗрд╕ рдХреЗ рддрддреНрд╡реЛрдВ рдХрд╛ рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдПрдХ рд╕рд╛рдЭрд╛ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ:
func sumSlice(slice []int, result *int) { sum := 0 for _, value := range slice { sum += value } *result = sum } func main() { slice1 := []int{1, 2, 3, 4, 5} slice2 := []int{6, 7, 8, 9, 10} sharedResult := 0 go sumSlice(slice1, &sharedResult) go sumSlice(slice2, &sharedResult) time.Sleep(1 * time.Second) fmt.Println("Result:", sharedResult) }
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдбреЗрдЯрд╛ рджреМрдбрд╝ рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░рджрд╛рдпреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рджреЛрдиреЛрдВ рдЧреЛрд░реМрдЯрд╛рдЗрди рдПрдХ рд╣реА рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рд╕реНрдерд╛рди рдкрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЪреИрдирд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдЪрд╛рд░ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдРрд╕реЗ рдореБрджреНрджреЛрдВ рд╕реЗ рдореБрдХреНрдд рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
func sumSlice(slice []int, ch chan int) { sum := 0 for _, value := range slice { sum += value } ch <- sum } func main() { slice1 := []int{1, 2, 3, 4, 5} slice2 := []int{6, 7, 8, 9, 10} ch := make(chan int) go sumSlice(slice1, ch) go sumSlice(slice2, ch) result1 := <-ch result2 := <-ch fmt.Println("Result:", result1 + result2) }
рдЧреЛ рдХреА рдЕрдВрддрд░реНрдирд┐рд░реНрдорд┐рдд рд╕рдВрдЧрд╛рдорд┐рддрд┐ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдХреЗ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЖрд╕рд╛рдиреА рд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЧреЛрд░реЛрдЗрди рдФрд░ рдЪреИрдирд▓реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рд╡реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдХреЛрдб рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рдЖрдзреБрдирд┐рдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреА рдкреВрд░реА рдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред AppMaster рдореЗрдВ, рдЧреЛ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдмреИрдХрдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╢рдХреНрдд рдмрдирд╛рддреА рд╣реИ, рд╢реАрд░реНрд╖ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрд░реЛрдд рдХреЛрдб рдЬрдирд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рддред
рдЧреЛ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╡рд░реНрддреА рдкреИрдЯрд░реНрди
рд╕рдорд╡рд░реНрддреА рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╡рд░реНрддреА рдкреИрдЯрд░реНрди рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рд╕рдорд╛рдзрд╛рди рд╣реИрдВред рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рд╣рдо рдЧреЛ рдореЗрдВ рдХреБрдЫ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рдорд╡рд░реНрддреА рдкреИрдЯрд░реНрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рдлреИрди-рдЗрди / рдлреИрди-рдЖрдЙрдЯ, рд╡рд░реНрдХрд░ рдкреВрд▓, рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдлреИрди-рдЗрди / рдлреИрди-рдЖрдЙрдЯ
рдлреИрди-рдЗрди/рдлреИрди-рдЖрдЙрдЯ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдбреЗрдЯрд╛ (рдлреИрди-рдЖрдЙрдЯ) рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдХрд╛рд░реНрдп рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЙрди рдХрд╛рд░реНрдпреЛрдВ (рдлреИрди-рдЗрди) рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдХрд╛рд░реНрдп рд╣реЛрддрд╛ рд╣реИред рдЧреЛ рдореЗрдВ, рдЖрдк рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЛ рдЧреЛрд░реЛрдЗрди рдФрд░ рдЪреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдлреИрди-рдЖрдЙрдЯ рднрд╛рдЧ рдбреЗрдЯрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЧреЛрд░реЛрдЯреАрди рд▓реЙрдиреНрдЪ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлреИрди-рдЗрди рднрд╛рдЧ рдПрдХрд▓ рдЪреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред ``рдЬрд╛рдУ func FanIn(рдЪреИрдирд▓ ...<-chan int) <-chan int { var wg sync.WaitGroup out := make(chan int) wg.Add(len(channels)) for _, c := рд╢реНрд░реЗрдгреА рдЪреИрдирд▓ { go func(ch <-chan int) { for n := range ch { out <- n } wg.Done() }(c) } go func() { wg.Wait() close(out) }( ) рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ} ```
рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рддрд╛рд▓
рдПрдХ рд╡рд░реНрдХрд░ рдкреВрд▓ рдЧреЛрд░реЛрдЗрди рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬреЛ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХреЛ рд╕рдорд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЖрдкрд╕ рдореЗрдВ рдХрд╛рд░реНрдпрднрд╛рд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдФрд░ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреЛрд░реЛрдЯреАрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЧреЛ рдореЗрдВ, рдЖрдк goroutines, channel рдФрд░ 'рд╢реНрд░реЗрдгреА' рдХреАрд╡рд░реНрдб рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╡рд░реНрдХрд░ рдкреВрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред ``` рдЧреЛ рдлрди рд╡рд░реНрдХрд░рдкреВрд▓ (рд╢реНрд░рдорд┐рдХ int, рдиреМрдХрд░рд┐рдпрд╛рдВ <-рдЪрд╛рди рдиреМрдХрд░реА, рдкрд░рд┐рдгрд╛рдо рдЪрд╛рди <- рдкрд░рд┐рдгрд╛рдо) { i рдХреЗ рд▓рд┐рдП: = 0; рдореИрдВ <рд╢реНрд░рдорд┐рдХ; i++ { рдЧреЛ рдлрдВрдХ () { рдиреМрдХрд░реА рдХреЗ рд▓рд┐рдП := рд░реЗрдВрдЬ рдЬреЙрдм { рдкрд░рд┐рдгрд╛рдо <- рдиреМрдХрд░реА.рдирд┐рд╖реНрдкрд╛рджрди ()}} ()}} ```
рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ
рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкреИрдЯрд░реНрди рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЧрд▓реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЖрдЙрдЯрдкреБрдЯ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдЧреЛ рдореЗрдВ, рдЧреЛрд░реЛрдЗрди рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреИрдирд▓реЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЧреЛрд░реЛрдЯреАрди рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдПрдХ рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред `` рдЧреЛ рдлрдВрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди (рдЗрдирдкреБрдЯ <-рдЪрд╛рди рдбреЗрдЯрд╛) <- рдЪрд╛рди рдкрд░рд┐рдгрд╛рдо {рд╕реНрдЯреЗрдЬ 1: = рд╕реНрдЯреЗрдЬ 1 (рдЗрдирдкреБрдЯ) рд╕реНрдЯреЗрдЬ 2: = рд╕реНрдЯреЗрдЬ 2 (рд╕реНрдЯреЗрдЬ 1) рд░рд┐рдЯрд░реНрди рд╕реНрдЯреЗрдЬ 3 (рд╕реНрдЯреЗрдЬ 2)} ```
рджрд░ рд╕реАрдорд┐рдд
рджрд░ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рдПрдХ рдРрд╕реА рддрдХрдиреАрдХ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕ рджрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдХреЛрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдФрд░ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд░реЛрдХрдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЧреЛ рдореЗрдВ, рдЖрдк рдЯрд╛рдЗрдо.рдЯрд┐рдХрд░ рдФрд░ 'рд╕рд┐рд▓реЗрдХреНрдЯ' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реЗрдЯ рд▓рд┐рдорд┐рдЯрд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред ``` рдЬрд╛рдУ func RateLimiter (рдЕрдиреБрд░реЛрдз <-рдЪрд╛рди рдЕрдиреБрд░реЛрдз, рджрд░ рд╕рдордпред рдЕрд╡рдзрд┐) <-рдЪрд╛рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ {рд╕реАрдорд╛: = рд╕рдордпред рдиреНрдпреВ рдЯрд┐рдХрд░ (рджрд░) рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдБ: = рдмрдирд╛рдУ (рдЪрд╛рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) рдЬрд╛рдУ func () { рд╕реНрдердЧрд┐рдд рдХрд░реЗрдВ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдБ) req рдХреЗ рд▓рд┐рдП: = рд░реЗрдВрдЬ рдЕрдиреБрд░реЛрдз {<-limit.C рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдБ <- req.Process ()}} () рд╡рд╛рдкрд╕реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдБ} ```
рд░рджреНрджреАрдХрд░рдг рдФрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдкреИрдЯрд░реНрди
рд╕рдорд╡рд░реНрддреА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ, рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬрд╣рд╛рдБ рдЖрдк рдХрд┐рд╕реА рдСрдкрд░реЗрд╢рди рдХреЛ рд░рджреНрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдЗрд╕рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдордп рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЧреЛ рд╕рдВрджрд░реНрдн рдкреИрдХреЗрдЬ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдЧреЛрд░реЛрдЗрди рдХреЗ рдЬреАрд╡рдирдЪрдХреНрд░ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд░рджреНрдж рдХрд░рдиреЗ, рд╕рдордп рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ, рдпрд╛ рдкреГрдердХ рдХреЙрд▓ рдкрдереЛрдВ рдореЗрдВ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред `` рдЧреЛ рдлрдВрдХ рд╡рд┐рде рдЯрд╛рдЗрдордЖрдЙрдЯ (рд╕реАрдЯреАрдПрдХреНрд╕ рд╕рдВрджрд░реНрднред рд╕рдВрджрд░реНрдн, рдЕрд╡рдзрд┐ рд╕рдордпред рдЕрд╡рдзрд┐, рдХрд╛рд░реНрдп рдлрдВрдХ () рддреНрд░реБрдЯрд┐) рддреНрд░реБрдЯрд┐ { рд╕реАрдЯреАрдПрдХреНрд╕, рд░рджреНрдж рдХрд░реЗрдВ: = рд╕рдВрджрд░реНрднред рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд╕рд╛рде (рд╕реАрдЯреАрдПрдХреНрд╕, рдЕрд╡рдзрд┐) рд░рджреНрдж рдХрд░реЗрдВ () рдХрд┐рдпрд╛ рдЧрдпрд╛: = рдореЗрдХ (рдЪрд╛рди рддреНрд░реБрдЯрд┐, 1) рдЬрд╛рдУ func () {рдХрд┐рдпрд╛ <- рдХрд╛рд░реНрдп ()} (рдЪреБрдиреЗрдВ {рдорд╛рдорд▓рд╛ <-ctx.Done (): рд╡рд╛рдкрд╕реА ctx.Err () рдорд╛рдорд▓рд╛ рддреНрд░реБрдЯрд┐: = <-рдХрд┐рдпрд╛ рдЧрдпрд╛: рд╡рд╛рдкрд╕реА рддреНрд░реБрдЯрд┐}} ```

рд╕рдорд╡рд░реНрддреА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдПрд░рд░ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдФрд░ рд░рд┐рдХрд╡рд░реА
рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдФрд░ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рдорд╡рд░реНрддреА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рд╣рдо рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╕рдорд╡рд░реНрддреА рдЧреЛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИ рдФрд░ рдЧреЛрд░реЛрдЯреАрдиреНрд╕ рдореЗрдВ рдкреИрдирд┐рдХ рд╕реЗ рдХреИрд╕реЗ рдЙрдмрд░рдирд╛ рд╣реИред
рд╕рдорд╡рд░реНрддреА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛
- рдЪреИрдирд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рднреЗрдЬреЗрдВ : рдЖрдк рдЧреЛрд░реЛрдЗрди рдХреЗ рдмреАрдЪ рддреНрд░реБрдЯрд┐ рдорд╛рдиреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреИрдирд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рд╕реАрд╡рд░ рдХреЛ рддрджрдиреБрд╕рд╛рд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрднрд╛рд▓рдиреЗ рджреЗрдВред `` `рдЬрд╛рдУ func рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ (рдиреМрдХрд░рд┐рдпрд╛рдВ <-рдЪрд╛рди int, рдкрд░рд┐рдгрд╛рдо рдЪрд╛рди <- int, errs рдЪрд╛рди <- рддреНрд░реБрдЯрд┐) {рдиреМрдХрд░реА рдХреЗ рд▓рд┐рдП: = рд░реЗрдВрдЬ рдиреМрдХрд░рд┐рдпрд╛рдВ { res, err: = рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдиреМрдХрд░реА) рдЕрдЧрд░ рдЧрд▓рддреА! = рд╢реВрдиреНрдп {рддреНрд░реБрдЯрд┐рдпрд╛рдВ < - рддреНрд░реБрдЯрд┐ рдЬрд╛рд░реА рд░рдЦреЗрдВ} рдкрд░рд┐рдгрд╛рдо <- res}} ```
- 'рдЪрдпрди' рдХрдерди рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ : рдбреЗрдЯрд╛ рдФрд░ рддреНрд░реБрдЯрд┐ рдЪреИрдирд▓реЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЖрдк 'рдЪрдпрди' рдХрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рдЪреИрдирд▓реЛрдВ рдХреЛ рд╕реБрдирдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред ```рдЬрд╛рдУ рд╕рд▓реЗрдХреНрдЯ {рдХреЗрд╕ рд░реЗрд╕:= <-рд░рд┐рдЬрд▓реНрдЯреНрд╕: fmt.Println("Result:", res) рдХреЗрд╕ рдПрд░рд░:= <-errs: fmt.Println("Error:", err) } ```
рдЧреЛрд░реЛрдЯреАрдиреНрд╕ рдореЗрдВ рдкреИрдирд┐рдХреНрд╕ рд╕реЗ рдЙрдмрд░рдирд╛
рдЧреЛрд░реЛрдЗрди рдореЗрдВ рдШрдмрд░рд╛рд╣рдЯ рд╕реЗ рдЙрдмрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрд╕реНрдЯрдо рд░рд┐рдХрд╡рд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде 'рдбрд┐рдлрд░' рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рддрдм рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм goroutine рдПрдХ рдЖрддрдВрдХ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдФрд░ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдореЗрдВ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред ``` рдЧреЛ рдлрдВрдХ рд╡рд░реНрдХрд░рд╕реЗрдл () { рдбрд┐рдлрд░ рдлрдВрдХ () { рдЕрдЧрд░ рдЖрд░: = рд░рд┐рдХрд╡рд░ (); r != nil { fmt.Println("рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд:", r) }}() // рдЖрдкрдХрд╛ рдЧреЛрд░реВрдЯреАрди рдХреЛрдб рдпрд╣рд╛рдВ} ```
рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдВрдЧрддрд┐ рдХрд╛ рдЕрдиреБрдХреВрд▓рди
рдЧреЛ рдореЗрдВ рд╕рдорд╡рд░реНрддреА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕рд╣реА рд╕рдВрддреБрд▓рди рдЦреЛрдЬрдирд╛ рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЕрдзрд┐рдХрддрдо рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣рд╛рдВ рдХреБрдЫ рддрдХрдиреАрдХреЗрдВ рджреА рдЧрдИ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдЕрдкрдиреЗ рд╕рдорд╡рд░реНрддреА рдЧреЛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рдЧреЛрд░реЛрдЯреАрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдлрд╝рд╛рдЗрди-рдЯреНрдпреВрди рдХрд░реЗрдВ : рдЧреЛрд░реЛрдЯреАрди рдХреА рд╕рд╣реА рд╕рдВрдЦреНрдпрд╛ рдЖрдкрдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЗ рдФрд░ рдЖрдкрдХреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреА рд╕реАрдорд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП goroutines рдХреА рдЗрд╖реНрдЯрддрдо рд╕рдВрдЦреНрдпрд╛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред
- рдмрдлрд╝рд░ рдХрд┐рдП рдЧрдП рдЪреИрдирд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ : рдмрдлрд╝рд░ рдХрд┐рдП рдЧрдП рдЪреИрдирд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд╡рд░реНрддреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдереНрд░реВрдкреБрдЯ рдХреЛ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╡реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдФрд░ рдЙрдкрднреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рд░реЗрдЯ рд▓рд┐рдорд┐рдЯрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ : рд░рд┐рд╕реЛрд░реНрд╕-рдЗрдВрдЯреЗрдВрд╕рд┐рд╡ рдкреНрд░реЛрд╕реЗрд╕ рдореЗрдВ рд░реЗрдЯ рд▓рд┐рдорд┐рдЯрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рд░рд┐рд╕реЛрд░реНрд╕ рдпреВрдЯрд┐рд▓рд╛рдЗрдЬреЗрд╢рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╡рд┐рд╡рд╛рдж, рдЧрддрд┐рд░реЛрдз рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдУрд╡рд░рд▓реЛрдб рдЬреИрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд░реЛрдХрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИред
- рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ : рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдХреИрд╢ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдХреНрд╕рд░ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЧрдгрдирд╛рдУрдВ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рдордЧреНрд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред
- рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░реЗрдВ : рдкреНрд░рджрд░реНрд╢рди рдмрд╛рдзрд╛рдУрдВ рдФрд░ рд╕рдВрд╕рд╛рдзрди-рдЦрдкрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдкреНрд░реЛрдл рдЬреИрд╕реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЧреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░реЗрдВред
- рдмреИрдХрдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП AppMaster рд▓рд╛рдн рдЙрдард╛рдПрдВ : AppMaster рдиреЛ-рдХреЛрдб рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдЧреЛ рдХреА рд╕рдорд╡рд░реНрддреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддреЗ рд╣реБрдП рдмреИрдХрдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдорд╛рдкрдиреАрдпрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрддреА рд╣реИред
рдЗрди рд╕рдорд╡рд░реНрддреА рдкреИрдЯрд░реНрди рдФрд░ рдЕрдиреБрдХреВрд▓рди рддрдХрдиреАрдХреЛрдВ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдХреЗ, рдЖрдк рдЧреЛ рдореЗрдВ рдХреБрд╢рд▓ рдФрд░ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рд╡рд╛рд▓реЗ рд╕рдорд╡рд░реНрддреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдкрдиреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдирдИ рдКрдВрдЪрд╛рдЗрдпреЛрдВ рдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рдХреНрддрд┐рд╢рд╛рд▓реА AppMaster рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд╕рд╛рде-рд╕рд╛рде Go рдХреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд╡рд░реНрддреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╢реНрди
рдЧреЛ рдореЗрдВ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдПрдХ рд╕рд╛рде рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдХрдо рд╕реЗ рдХрдо, рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЪрд▓рддреЗ рд╣реБрдП рджрд┐рдЦрд╛рдИ рджреЗрдВред рдЧреЛ рдореЗрдВ рдЧреЛрд░реЛрдЗрди, рдЪреИрдирд▓ рдФрд░ 'рдЪрдпрди' рдХрдерди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдорд╡рд░реНрддреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд░реНрдерди рд╢рд╛рдорд┐рд▓ рд╣реИред
рдЧреЛрд░реЛрдЗрди рд╣рд▓реНрдХреЗ рдзрд╛рдЧреЗ рдЬреИрд╕реА рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЧреЛ рдХреЗ рд░рдирдЯрд╛рдЗрдо рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рд╣рдЬрд╛рд░реЛрдВ рдпрд╛ рд▓рд╛рдЦреЛрдВ рд╕рдорд╡рд░реНрддреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди, рдХреБрд╢рд▓ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рдмрд╛рдж 'рдЧреЛ' рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреЛрд░рдЖрдЙрдЯ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЧреЛ рд░рдирдЯрд╛рдЗрдо рдЕрдиреБрд╕реВрдЪрдХ рдПрдХ рд╕рд╛рде рдЧреЛрд░реЛрдЯреАрди рдХреЗ рдкреНрд░рдмрдВрдзрди рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддрд╛ рд╣реИред
рдЧреЛ рдореЗрдВ рдЪреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреЛрд░реЛрдЗрди рдХреЗ рдмреАрдЪ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдФрд░ рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рд╕рдорд╡рд░реНрддреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рд╕рдВрдЪрд╛рд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рджреМрдбрд╝ рд╕реЗ рдореБрдХреНрдд рд╣реИред рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреНрд╖рдорддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЪреИрдирд▓ рдХреЛ рдЕрдирдмрдлрд░ рдпрд╛ рдмрдлрд╝рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЧреЛ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╡рд░реНрддреА рдкреИрдЯрд░реНрди рдореЗрдВ рдлреИрди-рдЗрди / рдлреИрди-рдЖрдЙрдЯ рдкреИрдЯрд░реНрди, рд╡рд░реНрдХрд░ рдкреВрд▓, рдкрд╛рдЗрдкрд▓рд╛рдЗрди, рд░реЗрдЯ рд▓рд┐рдорд┐рдЯрд┐рдВрдЧ рдФрд░ рд░рджреНрджреАрдХрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЧреЛ рдореЗрдВ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА, рдХреБрд╢рд▓ рд╕рдорд╡рд░реНрддреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЗрди рдкреИрдЯрд░реНрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЧреЛ рдореЗрдВ, рдЖрдк рдЪреИрдирд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреНрд░реБрдЯрд┐ рдорд╛рдиреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдХреЗ рд╕рдорд╡рд░реНрддреА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдХрдИ рддреНрд░реБрдЯрд┐ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП 'рд╕рд┐рд▓реЗрдХреНрдЯ' рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд░рд┐рдХрд╡рд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде 'рдбрд┐рдлрд░' рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдФрд░ рдкреИрдирд┐рдХреНрд╕ рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЧреЛрд░реЛрдЗрди рдореЗрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред .
рдЧреЛ рдореЗрдВ рд╕рдорд╡рд░реНрддреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк goroutines рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдереНрд░реВрдкреБрдЯ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдлрд╝рд░ рдХрд┐рдП рдЧрдП рдЪреИрдирд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рджрд░ рдХреЛ рдирд┐рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рдВрдЧрдгрдирд╛рдУрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╢рд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреА рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрдк Go рдореЗрдВ рд╕рдорд╡рд░реНрддреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдмреИрдХрдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП AppMaster рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╢реАрд░реНрд╖ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдорд╛рдкрдиреАрдпрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрддреА рд╣реИред


