OmniThreadLibrary рд▓рд╛рдЗрдмреНрд░реЗрд░реА - рдПрдХ рдбреЗрд▓реНрдлреА рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рд╕рд░рд▓ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ

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


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

рдбреЗрд▓реНрдлреА рдХреНрдпреЛрдВ?


рдореИрдВ рдбреЗрд▓реНрдлреА рдореЗрдВ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЖрдирдВрдж рд▓реЗрдирд╛ рдмрдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ред рдпрд╣ рдХрдИ рдорд╛рдпрдиреЛрдВ рдореЗрдВ рдПрдХ рдЕрджреНрднреБрдд рднрд╛рд╖рд╛ рд╣реИред рдЗрд╕рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХрд╛ рдХреЛрдб рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╢реЗрд╖ "рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рдХрд░реАрдм", рдХреНрдпреЛрдВрдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рдореВрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ, рдЬреЛ рдЬрд╛рд╡рд╛ рдпрд╛ .Net рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рд▓рд┐рдП рдХреЛрдб рдирд╣реАрдВ рд╣реИред рдФрд░ рдЗрд╕реА рд╕рдордп, рдбреЗрд▓реНрдлреА рднрд╛рд╖рд╛ рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реИ, рдЗрд╕ рдкрд░ рдХреЛрдб рдкрдврд╝рдиреЗ рдФрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ C рдпрд╛ C ++ рдореЗрдВ рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ (рд╕реА рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд╕рднреА рдмрдбрд╝реЗ рд╕рдореНрдорд╛рди рдХреЗ рд╕рд╛рде, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреЛрдИ рдХрд╣реЗрдЧрд╛ рдХрд┐) рдпрд╣ рд╕рд┐рд░реНрдл рдЖрджрдд рдХреА рдмрд╛рдд рд╣реИ)ред
рдлрд┐рд▓рд╣рд╛рд▓, рдбреЗрд▓реНрдлреА рдиреЗ рдЕрдкрдиреА рдкреВрд░реНрд╡ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдЦреЛ рджреА рд╣реИред рдпрд╣ рд╕рдВрднрд╡рддрдГ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реБрдЖ рдХрд┐ 2000 рдХреЗ рджрд╢рдХ рдореЗрдВ рдЗрд╕ рдЙрддреНрдкрд╛рдж рдХреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдХрдИ рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдпрд╣ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рджреМрдбрд╝ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЧрдпрд╛ред рджрд░рдЕрд╕рд▓, 2002 рдореЗрдВ рдмреЛрд░рд▓реИрдВрдб рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдбреЗрд▓реНрдлреА 7 рдХреЗ рдмрд╛рдж, рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╕реНрдерд┐рд░ рдЙрддреНрдкрд╛рдж рдХреЗрд╡рд▓ 2007 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдпрд╣ рдХреЛрдбрдЧрд┐рдпрд░ рдбреЗрд▓реНрдлреА 2007 рдерд╛, рдЬреЛ рдмреЛрд░рд▓реИрдВрдб рдХреА рд╕рд╣рд╛рдпрдХ рдХрдВрдкрдиреА рдХреЛрдбрдЧрд┐рдпрд░ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдбреЗрд▓реНрдлреА 7 рдФрд░ рдбреЗрд▓реНрдлреА 2007 рдХреЗ рдмреАрдЪ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдг рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдиреБрдкрдпреЛрдЧреА рдереЗред 2008 рдореЗрдВ, Borland рдиреЗ Embarcadero Technologies рдХреЛ рдХреЛрдбрдЧрд┐рдпрд░ рдбрд┐рд╡реАрдЬрди рдХреЛ рдмреЗрдЪ рджрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП (рдЙрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рдж!) рддреБрд░рдВрдд рдПрдХ рдЖрдзреБрдирд┐рдХ, рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рдорд┐рд▓рд╛ рдЙрд╕реЗ рдЪрд╛рд▓реВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рд▓реЗрдЦрди рдХреЗ рд╕рдордп рдбреЗрд▓реНрдлреА рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг Embarcadero Delphi XE2 рд╣реИ, рдЬрд┐рд╕реЗ рд╕рд┐рддрдВрдмрд░ 2011 рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдирд╡реАрдирддрдо рдбреЗрд▓реНрдлреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдзреАрд░реЗ-рдзреАрд░реЗ рдЦреЛрдП рд╣реБрдП рдкрджреЛрдВ рдХреЛ рдЬреАрдд рд░рд╣рд╛ рд╣реИред

рд╣рдореЗрдВ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?


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

рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдХреНрдпреЛрдВ рд╣реИ?


1) рдЧрд▓рддреА рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рдЬрдм рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдПрдХ рд╕рд╛рде рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкрддрд╛ рд╕реНрдерд╛рди (рдореЗрдореЛрд░реА) рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рдордЬрд╝рдмреВрддреА рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдкрддреЗ рд╕реНрдерд╛рди рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдВрджрд░ рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╡реЗ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдкрддрд╛ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рдЖрдкрдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдореЗрдореЛрд░реА рдкреНрд░реЛрдЯреЗрдХреНрд╢рди рдФрд░ рдереНрд░реЗрдб рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЬрдЯрд┐рд▓ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рд╕рд╛рде рдкреЗрд▓реЛрдб рдХреЛрдб рдирд╣реАрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдХреЛрдб рдХреЛ "рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ" (рдлреНрд░рд╛рдЗрдВрдЧ рдкреИрди) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдХреБрдЫ рднреВрдирдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдкреИрди рдХреЛ рдкрд╣рд▓реЗ рдкрдХрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдПрдХ "рдЧреИрд░-рдорд╛рдирдХ" рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╡рд╛рдкрд╕ рд░рдЦрддрд╛ рд╣реИред рдереНрд░реЗрдбреНрд╕ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рд╢реЗрд╖ рддрдВрддреНрд░ рд╣реИрдВ: рдЗрдВрдЯрд░рд▓реЙрдХ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рд╡рд╕реНрддреБрдПрдВ (рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЦрдВрдб, рдореНрдпреВрдЯреЗрдХреНрд╕, рд╕реЗрдореАрдлреЛрд░, рдИрд╡реЗрдВрдЯ, рдЖрджрд┐), рд╕реНрдкрд┐рди рд▓реЙрдХ, рдЖрджрд┐ред
2) рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╕рдордп рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдереНрд░реЗрдбреНрд╕ рд╕реЗ (рдпрд╛ рдХреЙрд▓) рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛рдиреА рдЖрдкрдХреЛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдереНрд░реЗрдбреНрд╕ рд╕реЗ рдХреМрди рд╕реЗ рддрд░реАрдХреЗ рдХрд╣реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреМрди рд╕реЗ рдирд╣реАрдВред рдЪреВрдВрдХрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдереНрд░реЗрдб-рд╕реЗрдл рдмрдирд╛рдирд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рддреНрд░реБрдЯрд┐ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдореМрдХрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрдИ рдереНрд░реЗрдбреНрд╕ рд╕реЗ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
3) рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ, рдереНрд░реЗрдбреНрд╕ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЪрд▓ рд░рд╣реА рд╣реИрдВ (рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд╡рд┐рднрд┐рдиреНрди рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд╕рд╛рде)ред рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рд╣реИ (http://www.thedelphigeek.com/2011/08/multithreading-is-hard.html)ред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреГрддреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдмрдирд╛рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЗрд▓реНрдлреА рдореЗрдВ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИрдВ, рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдиреЗрддрд╛ рд╣реИред
4) рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИ, рддреЛ рдХреЗрд╡рд▓ рдПрдХ рдзрд╛рдЧрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо рдпрд╛ рддреЛ рдЗрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдВрджрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рддреНрд░реБрдЯрд┐ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рд╡рд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ "рддреБрд░рдВрдд" рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдореБрдЦреНрдп рд╕реНрдЯреНрд░реАрдо рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рддрдм рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЬрдЯрд┐рд▓ рдФрд░ рднреНрд░рд╛рдордХ рдХреЛрдб рд╕рдВрд░рдЪрдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдХреНрдпрд╛ рдореЗрд░реЗ рдЬреАрд╡рди рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?


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

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

рдУрдЯреАрдПрд▓ рдХреНрдпрд╛ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ?


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

рднрд╡рд┐рд╖реНрдп


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

uses OtlParallel; ... procedure TestFuture; var vFuture: IOmniFuture<integer>; begin //      vFuture := Parallel.Future<integer>( function: integer var i: integer; begin Result := 0; for i := 1 to 100000 do Result := Result + i; end ); //   -     (      (    ,    ,        ) //     ,     ShowMessage(IntToStr(vFuture.Value)); end; 


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

рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 while not vFuture.IsDone do Application.ProcessMessages; 

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

рдкрд╛рдЗрдкрд▓рд╛рдЗрди


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

 uses OtlCommon, OtlCollections, OtlParallel; var sum: integer; begin sum := Parallel.Pipeline .Stage( procedure (const input, output: IOmniBlockingCollection) var i: integer; begin for i := 1 to 1000000 do output.Add(i); end) .Stage( procedure (const input: TOmniValue; var output: TOmniValue) begin output := input.AsInteger * 3; end) .Stage( procedure (const input, output: IOmniBlockingCollection) var sum: integer; value: TOmniValue; begin sum := 0; for value in input do Inc(sum, value); output.Add(sum); end) .Run.Output.Next; end; 

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

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

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


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

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

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


All Articles