рджреГрд╢реНрдп C ++ 2010 рдореЗрдВ OpenMP рдХреЛ рддреЗрдЬ рдХрд░рдирд╛

C ++ рдореЗрдВ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рд╕рд╕реНрддреЗ рд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ OpenMP рд╣реИ ред

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

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

рдпрд╣ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реИ?


рдирдП рдУрдкрдирдПрдордкреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо I / O рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛, рдФрд░ рд╕рдХреНрд░рд┐рдп SpinWait рдХреЗ рд╕рд╛рде рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ред

рдпрд╛рдиреА рдЕрдЧрд░ рд╣рдордиреЗ OMP (1 рдкреНрд░рддрд┐ рдХреЛрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ O рдереНрд░реЗрдб рдмрдирд╛рдП рд╣реИрдВ, рдФрд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдХреЛрд░ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдХрдмреНрдЬрд╛ рд╣реИ, рддреЛ рдПрдХ рдЙрдЪреНрдЪ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде 2 рдпрд╛ рдЕрдзрд┐рдХ рдереНрд░реЗрдбреНрд╕ рдХреЛ рдПрдХ рдХреЛрд░ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ 200 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдкреЙрдЬрд╝ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░ рд╣реЛрдЧрд╛ред ред

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

рдЕрдЧрд░ рдореИрдВ рдПрдХ рдИрдорд╛рдирджрд╛рд░ рдереНрд░реЗрдбрд┐рдВрдЧ рдкреВрд▓ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рддреЛ рдЖрд▓рд╕реНрдп рдзрд░реНрдо рдХреЛ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ - рдореИрдВ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ ... Microsoft Visual Studio 2005 рд╕реЗ рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдУрдкрдирдПрдордкреА рдбрд╛рдЙрдирдЧреНрд░реЗрдбред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рд░реНрджреЗрд╢ рдиреНрдпреВрдирддрдо рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2008 рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд┐рдЬрд╝реБрдЕрд▓ C ++ 2005 рд╕реБрдЗрдЯ рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдлрд╝реЛрд▓реНрдбрд░ vcomp.lib, vcompd.lib рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ (рдЖрдк рд╕реАрдзреЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЧрдП рд╡рд┐рддрд░рдг рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ)ред рд╣рдо рдУрдкрдирдПрдордкреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЧреБрдгреЛрдВ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдкрдиреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ "рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ" рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╡реЛрдЗрд▓рд╛ - рдЕрдм рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдУрдкрдирдПрдордкреА рдХреЗ "рд╕рд╣реА", рддреЗрдЬреА рд╕реЗ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд▓рд┐рдВрдХ рдХрд░ рд░рд╣реА рд╣реИред

рд▓реЗрдХрд┐рди рд╡рд╣ рд╕рдм рдирд╣реАрдВ рд╣реИред рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде <omp.h> рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ:
#pragma once #include <omp.h> #ifndef __OMP_LIBRARIES_ASSEMBLY_NAME_PREFIX #define __OMP_LIBRARIES_ASSEMBLY_NAME_PREFIX "Microsoft.VC80" #endif #ifndef _OMP_VC_ASSEMBLY_PUBLICKEYTOKEN #define _OMP_VC_ASSEMBLY_PUBLICKEYTOKEN "1fc8b3b9a1e18e3b" #endif #ifndef __OMP_CRT_ASSEMBLY_VERSION #define __OMP_CRT_ASSEMBLY_VERSION "8.0.50727.762" #endif #if defined(_DEBUG) #if defined(_M_IX86) #pragma comment(linker,"/manifestdependency:\"type='win32' " \ "name='" __OMP_LIBRARIES_ASSEMBLY_NAME_PREFIX ".DebugOpenMP' " \ "version='" __OMP_CRT_ASSEMBLY_VERSION "' " \ "processorArchitecture='x86' " \ "publicKeyToken='" _OMP_VC_ASSEMBLY_PUBLICKEYTOKEN "'\"") #elif defined(_M_AMD64) #pragma comment(linker,"/manifestdependency:\"type='win32' " \ "name='" __OMP_LIBRARIES_ASSEMBLY_NAME_PREFIX ".DebugOpenMP' " \ "version='" __OMP_CRT_ASSEMBLY_VERSION "' " \ "processorArchitecture='amd64' " \ "publicKeyToken='" _OMP_VC_ASSEMBLY_PUBLICKEYTOKEN "'\"") #elif defined(_M_IA64) #pragma comment(linker,"/manifestdependency:\"type='win32' " \ "name='" __OMP_LIBRARIES_ASSEMBLY_NAME_PREFIX ".DebugOpenMP' " \ "version='" __OMP_CRT_ASSEMBLY_VERSION "' " \ "processorArchitecture='ia64' " \ "publicKeyToken='" _OMP_VC_ASSEMBLY_PUBLICKEYTOKEN "'\"") #endif #else // _DEBUG #if defined(_M_IX86) #pragma comment(linker,"/manifestdependency:\"type='win32' " \ "name='" __OMP_LIBRARIES_ASSEMBLY_NAME_PREFIX ".OpenMP' " \ "version='" __OMP_CRT_ASSEMBLY_VERSION "' " \ "processorArchitecture='x86' " \ "publicKeyToken='" _OMP_VC_ASSEMBLY_PUBLICKEYTOKEN "'\"") #elif defined(_M_AMD64) #pragma comment(linker,"/manifestdependency:\"type='win32' " \ "name='" __OMP_LIBRARIES_ASSEMBLY_NAME_PREFIX ".OpenMP' " \ "version='" __OMP_CRT_ASSEMBLY_VERSION "' " \ "processorArchitecture='amd64' " \ "publicKeyToken='" _OMP_VC_ASSEMBLY_PUBLICKEYTOKEN "'\"") #elif defined(_M_IA64) #pragma comment(linker,"/manifestdependency:\"type='win32' " \ "name='" __OMP_LIBRARIES_ASSEMBLY_NAME_PREFIX ".OpenMP' " \ "version='" __OMP_CRT_ASSEMBLY_VERSION "' " \ "processorArchitecture='ia64' " \ "publicKeyToken='" _OMP_VC_ASSEMBLY_PUBLICKEYTOKEN "'\"") #endif #endif // _DEBUG 


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

рдорд╛рди __OMP_LIBRARIES_ASSEMBLY_NAME_PREFIX, _OMP_VC_ASSEMBLY_PUBLICKEYTOKEN рдФрд░ __OMP_CRT_ASSEMBLY_VERSION рдХреЛ <crtassem.h> рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд┐рдЬрд╝реБрдЕрд▓ C ++ 2005 рдкреИрдХреЗрдЬ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдг рд╣реИред

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрднреА рднреА рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ - рдЕрдм рд╕реНрдЯреВрдбрд┐рдпреЛ рдЙрд╕ рд╕реАрдорд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬреЛ __You_must_link_with_Microsoft_OpenMP_library рдкреНрд░рддреАрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рдБ, рдпрд╣ рд╕рдВрдХрд▓рдХ рд╕реЗ рдмрд╣реБрдд рд╕реВрдХреНрд╖реНрдо рд╕рдВрдХреЗрдд рдерд╛ред

рдЖрдЗрдП рдЬрдирд┐рдд .obj рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦреЗрдВред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, disassembler рдореЛрдб рдореЗрдВ objconv рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИред

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

рдПрдХ рд╡реНрдпрд░реНрде рдЪрд░ рдЬреЛрдбрд╝реЗрдВ:
 PUBLIC __You_must_link_with_Microsoft_OpenMP_library data segment __You_must_link_with_Microsoft_OpenMP_library db 1 data ends end 


рд╕рдВрдХрд▓рди:
 ml /c antiomp.asm 


рдФрд░ рдкрд░рд┐рдгрд╛рдореА antiomp.obj рдЖрдЙрдЯрдкреБрдЯ OpenMP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрдирдкреБрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣реА рд╣реИ - рд╣рдореЗрдВ рдПрдХ рдХрд╛рдо рдХреЛрдб рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рдУрдкрдирдПрдордкреА рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:
  1. рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдПрдВ, рдбрд┐рдмрдЧрд░ рдЙрдард╛рдПрдВ рдФрд░ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реВрдЪреА рдореЗрдВ рдУрдкрдирдПрдордкреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдвреВрдВрдвреЗрдВ (рдбреАрдмрдЧ | рдПрдЪрдбреА рдореЙрдбреНрдпреВрд▓)
  2. рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ vcomp100 рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдпрджрд┐ рд╕рдм рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд░реЗрдЦрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП


рдПрдХ рдЕрдЪреНрдЫреА рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░реЗрдВ!

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


All Articles