рд╡рд┐рдЬреБрдЕрд▓ C ++ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдФрд░ рдкреВрдЫрд╛ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рд▓реВрдк рдЕрдВрддрд╣реАрди рдХреНрдпреЛрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рд╣рд╛рд▓рдд рдмрдВрдж рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЪрдХреНрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
#include <windows.h> int x = 0, y = 1; int* ptr; DWORD CALLBACK ThreadProc(void*) { Sleep(1000); ptr = &y; return 0; } int main(int, char**) { ptr = &x; // starts out pointing to x DWORD id; HANDLE hThread = CreateThread(nullptr, 0, ThreadProc, 0, &id); // , ptr // while (*ptr == 0) { } return 0; }
рдЬреЛ рд▓реЛрдЧ Windows рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ рд╢реБрджреНрдз C ++ рдореЗрдВ рдмрд░рд╛рдмрд░ рд╣реИ:
#include <chrono> #include <thread> int x = 0, y = 1; int* ptr = &x; void ThreadProc() { std::this_thread::sleep_for(std::chrono::seconds(1)); ptr = &y; } int main(int, char**) { ptr = &x; // starts out pointing to x std::thread thread(ThreadProc); // , ptr // while (*ptr == 0) { } return 0; }
рдЕрдЧрд▓рд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЕрдкрдиреА рд╕рдордЭ рд▓рд╛рдпрд╛:
рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рд╕рд╢рд░реНрдд рд▓реВрдк рдХреЛ рдЕрдирдВрдд рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдЙрддреНрдкрдиреНрди рдХреЛрдбрд░ рдХреЛрдб рд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдЬреЛ рдПрдХ рдмрд╛рд░ ptr рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдорд╛рди рдХреЛ рд░рдЬрд┐рд╕реНрдЯрд░ (рд▓реВрдк рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ) рдореЗрдВ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рд╢реВрдиреНрдп рдХреЗ рд╕рд╛рде рдЗрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рдореВрд▓реНрдп рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ ptr рд╕реЗ рдорд╛рди рдХрд╛ рдкреБрдирдГ рд▓реЛрдбрд┐рдВрдЧ рдлрд┐рд░ рдХрднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЪрдХреНрд░ рдХрднреА рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ ptr рдХреЛ "рд╡рд╛рд╖реНрдкрд╢реАрд▓ int *" рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд▓реВрдк рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ ptr рдорд╛рди рдХреЛ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореИрдВ рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдЗрддрдиреА рд╕реНрдорд╛рд░реНрдЯ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЕрдкрдиреЗ рдЖрдк рдРрд╕рд╛ рдХрд╛рдо рдХрд░ рд╕рдХреЗ? рдЬрд╛рд╣рд┐рд░ рд╣реИ, рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдХреИрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрдВрдкрд╛рдЗрд▓рд░ рддреБрд░рдВрдд рд╕рд╣реА рдХреЛрдб рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ?
рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдереЛрдбрд╝рд╛ рдирд╛рдЗрдЯ-рдкрд┐рдХрд┐рдВрдЧ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ: "рд╡рд╛рд╖реНрдкрд╢реАрд▓ int * ptr" ptr рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ "рдкреЙрдЗрдВрдЯрд░ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдирд┐рд╖рд┐рджреНрдз рд╣реИ" рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ "рдПрдХ рдЪрд░ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕реВрдЪрдХ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд╣реИрдВред" рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рд╢реНрди рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рдорди рдореЗрдВ "int * volatile ptr" рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛ред
рдЕрдм рдореБрдЦреНрдп рдкреНрд░рд╢реНрди рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЛрдб рдкрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рдирдЬрд╝рд░ рд╣рдореЗрдВ рдмрддрд╛рдПрдЧреА рдХрд┐ std :: atomic рдЬреИрд╕реЗ рди рддреЛ рдХреЛрдИ рдЪрд░ рд╣реИрдВ, рди рд╣реА std рдХрд╛ рдЙрдкрдпреЛрдЧ: memory_order (рдпрд╛ рддреЛ рд╕реНрдкрд╖реНрдЯ рдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд)ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдзрд╛рд░рд╛рдУрдВ рд╕реЗ ptr рдпрд╛ * ptr рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдпрд╛рд╕ рд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИред рд╕рд╣рдЬ рд░реВрдк рд╕реЗ, рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ: "рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рд╡рд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЕрдХреЗрд▓реЗ рдЪрд▓ рд░рд╣рд╛ рдерд╛ред рдПрдХрдорд╛рддреНрд░ рдмрд┐рдВрджреБ рдЬрд╣рд╛рдВ рд╕рдВрдХрд▓рдХ MUST рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдзрд╛рд░рд╛рдУрдВ рдХреЗ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рд╡реЗ std :: atomic рдпрд╛ std рдпрд╛ "modorder" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред "
рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдкрд▓ рд╕реЗ рдЖрдк рдЕрд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ - рдмрд┐рд▓реНрдХреБрд▓ рдХреБрдЫ рднреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
рд▓реЗрдХрд┐рди рдареАрдХ рд╣реИ, рдЖрдЗрдП рдЙрдирдХреЗ рдкреНрд░рд╢реНрди рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ: рд╕рдВрдХрд▓рдХ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдорд╛рд░реНрдЯ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдкреЙрдЗрдВрдЯрд░ рдорд╛рди рдХреЛ рд▓реЛрдб рдХрд░рдХреЗ рд╕реНрд╡рддрдГ рдЕрдиреБрдХреВрд▓рди рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ? рдЦреИрд░, рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рд╕рдВрднрд╡ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдиреБрдХреВрд▓рди рдорд╛рдирдХ рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ рд╣реИред рдЙрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рдорд╛рдирдХ рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдЕрдиреБрдХреВрд▓рди рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдмреЗрд╣рддрд░ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рддрд░реНрдХ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред тАЬрдУрд╣, рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдпрд╣ рдЪрдХреНрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдзрд╛рдЧреЗ рдореЗрдВ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдореИрдВ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдзреАрдорд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕реМ рдмрд╛рд░ рд▓реЗ рдЬрд╛рдКрдВрдЧрд╛! " рдХреНрдпрд╛ рдРрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рд╢рд╛рдпрдж рд╣реАред
рд▓реЗрдХрд┐рди рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдо рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ "рдпрджрд┐ рдЕрдиреБрдХреВрд▓рди рдореЗрдВ рдЕрдирдВрдд рд▓реВрдк рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реБрдИ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рд░рджреНрдж рдХрд░рдиреЗ рдФрд░ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд┐рдирд╛ рдХреЛрдб рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред" рдпрд╛ рдЗрд╕ рддрд░рд╣ рднреА: "рдЬрдм рддрдХ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдЧреИрд░-рдЕрдирдВрдд рд▓реВрдк рди рд╣реЛ, рддрдм рддрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрдХреВрд▓рди рд░рджреНрдж рдХрд░реЗрдВред" рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЬреЛ рдпрд╣ рд▓рд╛рдПрдЧрд╛, рдХреНрдпрд╛ рдпрд╣ рдХреЛрдИ рд▓рд╛рдн рджреЗрдЧрд╛?
рд╣рд╛рдВ, рдЗрд╕ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдореЗрдВ рдПрдХ рдЕрдирдВрдд рд▓реВрдк рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ред рдпрд╣ рдмрд╛рдзрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдЕрдЧрд░ рдХреБрдЫ рдЕрдиреНрдп рдзрд╛рд░рд╛ * рдкреАрдЯреАрдЖрд░ рдХреЛ рдиреЙрдирдЬрд░реЛ рдорд╛рди рд▓рд┐рдЦрддреА рд╣реИред рдпрд╣ рднреА рдмрд╛рдзрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдЕрдЧрд░ рдПрдХ рдФрд░ рдзрд╛рдЧрд╛ рд╡реЗрд░рд┐рдПрдмрд▓ x рдХреЗ рд▓рд┐рдП рдПрдХ рдиреЙрдирдЬрд░реЛ рдорд╛рди рд▓рд┐рдЦрддрд╛ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдЙрди рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреЛ "рдкрдХрдбрд╝рдиреЗ" рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреА рдЧрд╣рд░рд╛рдИ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд▓реЙрдиреНрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЕрдкрдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдпрд╣ рдорд╛рди рд▓реЗрдирд╛ рд╣реИ рдХрд┐ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░, рд╕рдВрдХреЗрдд рдФрд░ рд▓рд┐рдВрдХ рдХреЛ рдХреЛрдИ рдХреЙрд▓ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЕрдиреБрдХреВрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
int limit; void do_something() { ... if (value > limit) value = limit;
рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ C ++ рдХреА рднрд╛рд╡рдирд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИред рднрд╛рд╖рд╛ рдорд╛рдирдХ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдПрдХ рдЪрд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рд╕рдВрд╢реЛрдзрди рдХреЛ рджреВрд╕рд░реЗ рдзрд╛рдЧреЗ рдореЗрдВ рджреЗрдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП: рдПрдХ рдкрд░рдорд╛рдгреБ рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрд╛ рд╕реНрдореГрддрд┐ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░реЗрдВ (рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред
рддреЛ рдХреГрдкрдпрд╛ рдмрд╕ рдЗрддрдирд╛ рд╣реА рдХрд░реЗрдВред