рдЕрдкрдиреЗ
рдкрд┐рдЫрд▓реЗ рдиреЛрдЯреЛрдВ рдореЗрдВ, рдореИрдВрдиреЗ рдЙрд╕ рдЖрдзрд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛, рдЬрд┐рд╕ рдкрд░ рд▓реЙрдХ-рдлреНрд░реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдмрдиреА рд╣реИрдВ, рдФрд░ рд▓реЙрдХ-рдлреНрд░реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдПрд▓реНрдЧреЛрд░рд┐рджрдоред рдпрд╣ рд╕реНрд╡рдпрдВ рд▓реЙрдХ-рдореБрдХреНрдд рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╡рд░реНрдгрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдерд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореБрдЭреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЖрдИ: рдЖрдЧреЗ рдХреА рдХрд╣рд╛рдиреА рдХреИрд╕реЗ рдмрдирд╛рдКрдВ? рдмрд╕ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЬреНрдЮрд╛рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ? рдпрд╣ рдмрд╣реБрдд рдЙрдмрд╛рдК рд╣реИ: рдмрд╣реБрдд рд╕рд╛рд░реЗ [рдЫрджреНрдо] рдХреЛрдб, рд╡рд┐рд╡рд░рдгреЛрдВ рдХреА рдПрдХ рдмрд╣реБрддрд╛рдпрдд, рдорд╣рддреНрд╡рдкреВрд░реНрдг, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯред рдЕрдВрдд рдореЗрдВ, рдпрд╣ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╣реИ, рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдореИрдВ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реВрдВ, рдФрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдФрд░ рдХрдареЛрд░ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЗрдВред рдореИрдВ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рдврдВрдЧ рд╕реЗ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рджрд┐рдЦрд╛рдирд╛ред
рдЦреИрд░, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, рддреЛ рдкреНрд░рд╕реНрддреБрддрд┐ рд╡рд┐рдзрд┐ рдЗрд╕ рддрд░рд╣ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП: рд╣рдо рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдВрдЯреЗрдирд░ рд▓реЗрддреЗ рд╣реИрдВ - рдореЛрдбрд╝, рдирдХреНрд╢рд╛, рд╣реИрд╢ рдореИрдк - рдФрд░ рд╣рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬреНрдЮрд╛рдд рдореВрд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред рдХрд╣рд╛рдБ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ? рдФрд░ рдлрд┐рд░ рдореБрдЭреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдпрд╛рдж рдЖрдИ - рд╕реНрдЯреИрдХред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рд╣рдо рд╕реНрдЯреИрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣ рдПрдХ рдРрд╕реА рддреБрдЪреНрдЫ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд╕реНрдЯреИрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рдо рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рдУрд░, рд╡реЗ рдЬреЛ рдвреЗрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рдбрд┐рдЧреНрд░реА рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИрдВред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдХрд┐ рдореБрдЭреЗ рдмреНрдпрд╛рдЬ рд╣реИред
рддрд╛рд▓рд╛-рдореБрдХреНрдд рдвреЗрд░
рд╕реНрдЯреИрдХ рд╢рд╛рдпрдж рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд▓реЙрдХ-рдлреНрд░реА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЯреНрд░реЗрдмреЗрд░ рдиреЗ рдЗрд╕реЗ
рдЕрдкрдиреЗ 1986 рдХреЗ
рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдмрд╛рдд рдХреЗ рд╕рдмреВрдд рд╣реИрдВ рдХрд┐ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдЖрдИрдмреАрдПрдо / 360 рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдкреАрдЫреЗ рд╣рдЯрдирд╛рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЯреНрд░реЗрдмреЗрд░ рдХрд╛ рд▓реЗрдЦ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреБрд░рд╛рдирд╛ рдирд┐рдпрдо рд╣реИ, рд╢рд╛рдпрдж рд▓реЙрдХ-рдлреНрд░реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдкрд╣рд▓рд╛ рд▓реЗрдЦред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рдирд╣реАрдВ рдкрддрд╛ рд╣реИрдВред рдпрд╣ рдЕрднреА рднреА рдЕрдХреНрд╕рд░ рд╕рдордХрд╛рд▓реАрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╛рд╣рд┐рд░ рд╣реИ, рддрд╛рд▓рд╛-рдореБрдХреНрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рдВрд╕реНрдерд╛рдкрдХ рдХреЛ рд╢реНрд░рджреНрдзрд╛рдВрдЬрд▓рд┐ рдХреЗ рд░реВрдк рдореЗрдВред
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрддрдирд╛ рд╕рд░рд▓ рд╣реИ рдХрд┐ рдореИрдВ
libcds рд╕реЗ рдЗрд╕рдХрд╛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХреЛрдб рджреЗ
рджреВрдВрдЧрд╛ (рдХрд┐рд╕реА рдХреЛ рднреА рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ
cds::intrusive::TreiberStack
рджрдЦрд▓рдВрджрд╛рдЬреА рдвреЗрд░):
рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣рдбреНрдбрд┐рдпреЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдпрд╣рд╛рдВ ) рджреНрд╡рд╛рд░рд╛ рдмрд╛рд░-рдмрд╛рд░ рдбрд┐рд╕рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рджреЛрд╣рд░рд╛рдпрд╛ рдирд╣реАрдВред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рдЗрд╕ рддрдереНрдп рддрдХ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рддрдХ
m_Top
рдореЗрдВ рдкрд░рдорд╛рдгреБ рдЖрджрд┐рдо CAS рдХреА рдорджрдж рд╕реЗ рд╣рдереМрдбрд╝рд╛
m_Top
ред рд╕рд░рд▓ рдФрд░ рдХрд╛рдлреА рдЖрджрд┐рдоред
рдореИрдВ рджреЛ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╡рд░рдгреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ:
- рд╕реБрд░рдХреНрд╖рд┐рдд рдореЗрдореЛрд░реА рд░рд┐рдХреНрд▓реЗрдореЗрд╢рди (SMR) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗрд╡рд▓
pop
рд╡рд┐рдзрд┐ рдореЗрдВ рд╣реЛрддреА рд╣реИ, рдХреЗрд╡рд▓ рд╡рд╣реАрдВ рд╕реЗ рд╣рдо m_Top
рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ m_Top
рд╣реИрдВред рдХреЛрдИ рднреА m_Top
рдлрд╝реАрд▓реНрдб рдХреЛ push
рдореЗрдВ рдирд╣реАрдВ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ ( m_Top
рдкреЙрдЗрдВрдЯрд░ рддрдХ рдХреЛрдИ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ), рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╣реЗрдЬрд╝рд░реНрдб рдХреЛ рдкреЙрдЗрдВрдЯрд░ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдорддреМрд░ рдкрд░ рд▓реЙрдХ-рдлреНрд░реА рдХрдВрдЯреЗрдирд░ рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдореЗрдВ рдПрд╕рдПрдордЖрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рд░рд╣рд╕реНрдпрдордп
bkoff
рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ bkoff()
рдХреЛ рдЗрд╕рдХреА рдХреЙрд▓ bkoff()
рдпрджрд┐ CAS рдЕрд╕рдлрд▓ рд╣реИ
рдпрд╣рд╛рдБ рдЗрд╕
bkoff
рдореИрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдмреИрдХ-рдСрдл рд░рдгрдиреАрддрд┐
рдХреИрд╕ рдЕрд╕рдлрд▓ рдХреНрдпреЛрдВ рд╣реИ? рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐
m_Top
рдХреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдХреЛ
m_Top
рдФрд░ CAS рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреЗ рдмреАрдЪ, рдХреБрдЫ рдЕрдиреНрдп рд╕реВрддреНрд░
m_Top
рдХреЗ рдорд╛рди рдХреЛ рдмрджрд▓рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рдпрд╣реА рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЙрдЪреНрдЪ рд╡рд┐рд╡рд╛рдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрдм рдПрди рдереНрд░реЗрдб
push
/
pop
, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЬреАрддреЗрдЧрд╛, рд╢реЗрд╖ рдПрди - 1 рд╕реАрдкреАрдпреВ рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░реЗрдЧрд╛ рдФрд░ рдХреИрд╕ рдкрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░реЗрдЧрд╛ (
рдПрдордИрдПрд╕рдЖрдИ рдХреИрд╢ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдпрд╛рдж рд░рдЦреЗрдВ)ред
рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ рдЪрд▓рдиреЗ рдкрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдХреИрд╕реЗ рдЙрддрд╛рд░рдирд╛ рд╣реИ? рдЖрдк рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд╕реЗ рдкреАрдЫреЗ рд╣рдЯ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдпрд╛ рдмрд╕ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣реА рдмреИрдХ-рдСрдл рд╕реНрдЯреНрд░реЗрдЯреЗрдЬреА рд╣реИред
рдмреЗрд╢рдХ, рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ, "рд╣рдо рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗ," рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреИрд╕реЗ рдХрд░реЗрдВ рдЗрдВрддрдЬрд╛рд░? рд╣рдо
sleep()
рд╕рд╛рде рд╡рд┐рдХрд▓реНрдк рдкрд░ рдзреНрдпрд╛рди рджреЗрддреЗ
sleep()
- рдХреБрдЫ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЫреЛрдЯреЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд╕рдВрджрд░реНрдн рдХрд╛ рдУрд╡рд░рд╣реЗрдб рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ - рдХреИрд╕ рд░рдирдЯрд╛рдЗрдо рд╕реЗ рдЕрдзрд┐рдХред
рд╢реИрдХреНрд╖рдгрд┐рдХ рдорд╛рд╣реМрд▓ рдореЗрдВ,
рдШрд╛рддреАрдп рдмреИрдХ-рдСрдл рд░рдгрдиреАрддрд┐ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИред рд╡рд┐рдЪрд╛рд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
class exp_backoff { int const nInitial; int const nStep; int const nThreshold; int nCurrent; public: exp_backoff( int init=10, int step=2, int threshold=8000 ) : nInitial(init), nStep(step), nThreshold(threshold), nCurrent(init) {} void operator()() { for ( int k = 0; k < nCurrent; ++k ) nop(); nCurrent *= nStep; if ( nCurrent > nThreshold ) nCurrent = nThreshold; } void reset() { nCurrent = nInitial; } };
рдпрд╣реА рд╣реИ, рд╣рдо рд▓реВрдк рдореЗрдВ
nop()
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рд░ рдмрд╛рд░ рд▓реВрдк рдХреА рд▓рдВрдмрд╛рдИ рдмрдврд╝рд╛рддреЗ рд╣реИрдВред
nop()
рдмрдЬрд╛рдп
nop()
рдЖрдк рдХреБрдЫ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдмрд┐рдЯрдХреЙрдЗрди рд╕рдВрдХреЗрдд рдирд┐рд░реНрджреЗрд╢ рдХреА
рдЧрдгрдирд╛ рдХрд░реЗрдВ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдЬреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ "рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдЖрдВрддрд░рд┐рдХ рдорд╛рдорд▓реЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ" (рдлрд┐рд░ рд╕реЗ, рдпрд╛рдж рд░рдЦреЗрдВ MESI - рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдкрд╛рд╕ рдРрд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ рд╢рд╛рдпрдж рд╕рдореБрджреНрд░)ред
рдПрдХреНрд╕рдкреЛрдиреЗрдВрд╢рд┐рдпрд▓ рдмреИрдХ-рдСрдл рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╕рд░рд▓ рд╣реИ - рдЕрдЪреНрдЫреЗ рдкреИрд░рд╛рдореАрдЯрд░
nInitial
,
nInitial
,
nInitial
рдХреЛ рдЦреЛрдЬрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдпреЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рдХрд╛рд░реНрдп рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдЫрдд рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдбреЗрд╕реНрдХрдЯреЙрдк рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рдПрдВрдЯреНрд░реА-рд▓реЗрд╡рд▓ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк
yield()
рдмреИрдХ-рдСрдл - рджреВрд╕рд░реЗ рдзрд╛рдЧреЗ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ред рдЗрд╕ рддрд░рд╣, рд╣рдо рдЕрдкрдирд╛ рд╕рдордп рдЕрдиреНрдп, рдЕрдзрд┐рдХ рд╕рдлрд▓ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рджреЗрддреЗ рд╣реИрдВ, рдЗрд╕ рдЙрдореНрдореАрдж рдореЗрдВ рдХрд┐ рд╡реЗ рд╡рд╣реА рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╣рдореЗрдВ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рдФрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд░реЛрдХ рджреЗрдВрдЧреЗ)ред
рдХреНрдпрд╛ рдмреИрдХ-рдЕрдк рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрд╕реЗ рднреА рд╣реИ? рдкреНрд░рдпреЛрдЧ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдмрд╛рдд: рд╕рд╣реА рдЕрдбрд╝рдЪрди рдореЗрдВ рд▓рд╛рдЧреВ рд╕рд╣реА рдмреИрдХ-рдСрдл рд░рдгрдиреАрддрд┐ рдХрдИ рдмрд╛рд░ рд▓реЙрдХ-рдореБрдХреНрдд рдХрдВрдЯреЗрдирд░ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд▓рд╛рдн рджреЗ рд╕рдХрддреА рд╣реИред
рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдмреИрдХ-рдСрдл рд░рдгрдиреАрддрд┐рдпрд╛рдВ рдЕрд╕рдлрд▓ рд╕реАрдПрдПрд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдпреЛрдЧрджрд╛рди рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ - рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рдиред рдХреНрдпрд╛ рдХрд┐рд╕реА рддрд░рд╣
push
/
pop
рдФрд░ рдмреИрдХ-рдСрдл рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рддрд╛рдХрд┐ рдмреИрдХ-рдСрдл рд░рдгрдиреАрддрд┐ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдорджрдж рдХрд░реЗ?
рдЙрдиреНрдореВрд▓рди рдмреИрдХ-рдСрдл
рджреВрд╕рд░реА рдУрд░
push
/
pop
рдореЗрдВ рд╡рд┐рдлрд▓ рдХреИрд╕ рдХреА рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдХреИрд╕ рдЕрд╕рдлрд▓ рдХреНрдпреЛрдВ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдФрд░ рдзрд╛рдЧрд╛
m_Top
рдмрджрд▓ рдЧрдпрд╛ред рдФрд░ рдпрд╣ рджреВрд╕рд░рд╛ рдзрд╛рдЧрд╛ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?
push()
рдпрд╛
pop()
ред рдЕрдм рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП
push
рдФрд░
pop
рдСрдкрд░реЗрд╢рдВрд╕ рдкреВрд░рдХ рд╣реИрдВ: рдпрджрд┐ рдПрдХ рдереНрд░реЗрдб
push()
рдХрд░рддрд╛ рд╣реИ
push()
рдФрд░ рджреВрд╕рд░рд╛ рдЙрд╕реА рд╕рдордп
pop()
рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдпрд╣
m_Top
рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ: рдПрдХ рдкреБрд╢ рд╕реНрдЯреНрд░реАрдо рдмрд╕ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХреЛ рдкреЙрдк-рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ, рдЬрдмрдХрд┐ рд╕реНрдЯреИрдХ рдХреА рдореБрдЦреНрдп рд╕рдВрдкрддреНрддрд┐ - LIFO - рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдХреЗ рдЗрди рджреЛрдиреЛрдВ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдПрдХ рд╕рд╛рде рдХреИрд╕реЗ рд▓рд╛рдпрд╛ рдЬрд╛рдПред
2004 рдореЗрдВ, рд╣реЗрдВрдбрд▓рд░, рд╢рд╛рд╡рд┐рдЯ рдФрд░ рдпреЗрд░реБрд╢рд╛рд▓рдореА рдиреЗ рдЯреНрд░реЗрдЗрдмрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛
рдПрдХ рд╕рдВрд╢реЛрдзрди
рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ , рдЬрд┐рд╕рдореЗрдВ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдкреБрд╢ рдФрд░ рдкреЙрдк рдзрд╛рд░рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдПрдХ рд╡рд┐рд╢реЗрд╖ рдмреИрдХ-рдСрдл рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ
рдЙрдиреНрдореВрд▓рди рдмреИрдХ-рдСрдл рд░рдгрдиреАрддрд┐ (рдЙрдиреНрдореВрд▓рди рдмреИрдХ) рдХрд╣рд╛ -рдЕрдм, рдореИрдВ рдЗрд╕реЗ рдПрдХ
рдЕрд╡рд╢реЛрд╖рд┐рдд рдмреИрдХ-рдСрдл рд░рдгрдиреАрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЕрдиреБрд╡рд╛рдж рдХрд░реВрдВрдЧрд╛)ред
рдЖрдХрд╛рд░ рдПрди рдХрд╛ рдПрдХ рдЙрдиреНрдореВрд▓рди рд╕рд░рдгреА рд╣реИ (рдПрди рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ)ред рдпрд╣ рд╕рд░рдгреА рд╕реНрдЯреИрдХ рд╡рд░реНрдЧ рдХрд╛ рд╕рджрд╕реНрдп рд╣реИред рдпрджрд┐ CAS рд╡рд┐рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдмреИрдХ-рдСрдлрд╝ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдереНрд░реЗрдб рдЕрдкрдиреЗ рдСрдкрд░реЗрд╢рди (
push
рдпрд╛
pop
) рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рд╕рд░рдгреА рдореЗрдВ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдПрдХ рдордирдорд╛рдирд╛ рд╕реЗрд▓ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХрдХреНрд╖ рдЦрд╛рд▓реА рд╣реИ, рддреЛ рд╡рд╣ рдЗрд╕рдореЗрдВ рдЕрдкрдиреЗ рд╡рд┐рд╡рд░рдгрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд▓рд┐рдЦрддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдмреИрдХ-рдСрдл рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХреНрд╕рдкреЗрдиреНрд╢рдирд▓ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЪрдпрдирд┐рдд рд╕реЗрд▓ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рд╕реА рдЕрдиреНрдп (рдирд┐рд╖реНрдХреНрд░рд┐рдп) рд╕реНрдЯреНрд░реАрдо рдХреЗ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ P рдХреЗ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╣реИ, рддреЛ рд╕реНрдЯреНрд░реАрдо (рдЗрд╕реЗ рд╕рдХреНрд░рд┐рдп рдХрд╣рддреЗ рд╣реИрдВ) рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рдСрдкрд░реЗрд╢рди рд╣реИред рдпрджрд┐ рдСрдкрд░реЗрд╢рди рдкреВрд░рдХ рд╣реИрдВ -
push
рдФрд░
pop
, рддреЛ рд╡реЗ рдкрд░рд╕реНрдкрд░ рдЕрд╡рд╢реЛрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ:
- рдпрджрд┐ рд╕рдХреНрд░рд┐рдп рдереНрд░реЗрдб
push
рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреА рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рдЕрдкрдирд╛ рддрд░реНрдХ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЗрд╕реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдереНрд░реЗрдб рдХреЗ pop
рдСрдкрд░реЗрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ; - рдпрджрд┐ рд╕рдХреНрд░рд┐рдп рдзрд╛рдЧрд╛
pop
, рддреЛ рдпрд╣ рд╣реИрдВрдбрд▓ рдкреА рд╕реЗ рдкреВрд░рдХ push
рдСрдкрд░реЗрд╢рди рдХреЗ рддрд░реНрдХ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИред
рдлрд┐рд░ рд╕рдХреНрд░рд┐рдп рдереНрд░реЗрдб рд╕рдВрд╕рд╛рдзрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдиреНрдореВрд▓рди рд╕рд░рдгреА рд╕реЗрд▓ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдмреИрдХ-рдСрдл рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╕рдордп рдирд┐рд╖реНрдХреНрд░рд┐рдп рдзрд╛рд░рд╛ рдпрд╣ рджреЗрдЦ рд╕рдХреЗ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕рдХреНрд░рд┐рдп рдФрд░ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдзрд╛рдЧреЗ
рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рдмрд┐рдирд╛ рдЕрдкрдиреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗред
рдпрджрд┐ рдЪрдпрдирд┐рдд рдЙрдиреНрдореВрд▓рди рд╕рд░рдгреА рд╕реЗрд▓ рдореЗрдВ рдСрдкрд░реЗрд╢рди рд╕рдорд╛рди рд╣реИ (рдкреБрд╢-рдкреБрд╢ рдпрд╛ рдкреЙрдк-рдкреЙрдк рд╕реНрдерд┐рддрд┐), рддреЛ рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рдХреНрд░рд┐рдп рдереНрд░реЗрдб рд╕рд╛рдорд╛рдиреНрдп рдмреИрдХ-рдСрдлрд╝ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЕрдкрдиреЗ
push
/
pop
рдХреЛ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ - рд╕реНрдЯреИрдХ рдЯреЙрдк рдХреА рдХреИрд╕ред
рдирд┐рд╖реНрдХреНрд░рд┐рдп рдзрд╛рд░рд╛, рдмреИрдХ-рдСрдл рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдПрд▓рд┐рдорд┐рдиреЗрд╢рди рдПрд░реЗ рдореЗрдВ рдЗрд╕рдХреЗ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЗ рдкрд╛рд╕ рдПрдХ рдиреЛрдЯ рд╣реИ рдХрд┐ рдСрдкрд░реЗрд╢рди рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдкреВрд░рдХ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╕реНрдЯреНрд░реАрдо рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╕реНрдЯреНрд░реАрдо рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЕрдкрдирд╛
push
/
pop
рдкреВрд░рд╛ рдХрд░рддреА рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рддрд╛рд▓реЗ рдХреЗ рдмрд┐рдирд╛ рд▓реЙрдХ-рдлреНрд░реА рддрд░реАрдХреЗ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╡рд░реНрдгрд┐рдд рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрд░реНрде рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред
рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдореЗрдВ рдСрдкрд░реЗрд╢рди рдХреЛрдб -
push
рдпрд╛
pop
- рдФрд░ рдСрдкрд░реЗрд╢рди рдХрд╛ рддрд░реНрдХ рд╣реЛрддрд╛ рд╣реИ:
push
рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рддрддреНрд╡ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЙрдЗрдВрдЯрд░
pop
рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ
pop
рдкреЙрдЗрдВрдЯрд░ рдлрд╝реАрд▓реНрдб рдЦрд╛рд▓реА (
nullptr
) рд░рд╣рддрд╛ рд╣реИ; рдЕрдЧрд░ рдпрд╣ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЕрд╡рд╢реЛрд╖рдХ
push
рдСрдкрд░реЗрд╢рди рдХреЗ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдЗрд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрдиреНрдореВрд▓рди рдмреИрдХ-рдЕрдк рдЖрдкрдХреЛ рд╕реНрдЯреИрдХ рдХреЛ рдЙрдЪреНрдЪ рд▓реЛрдб рдкрд░ рдЕрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдХрдо рдкрд░, рдЬрдм рд╕реНрдЯреИрдХ рдХреЗ рдХреИрд╕ рд╢реАрд░реНрд╖ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдпреЛрдЬрдирд╛ рдХрд┐рд╕реА рднреА рдУрд╡рд░рд╣реЗрдб рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкреЗрд╢ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдареАрдХ рдЯреНрдпреВрдирд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╖реНрдЯрддрдо рдЙрдиреНрдореВрд▓рди рд╕рд░рдгреА рдЖрдХрд╛рд░ рдЪреБрдирдирд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХрд╛рд░реНрдп рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдПрдХ рдЕрдиреБрдХреВрд▓реА рд╕рдВрд╕реНрдХрд░рдг рднреА рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдЫреЛрдЯреА рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рдЙрдиреНрдореВрд▓рди рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЛрдб рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓ рд╣реЛрддрд╛ рд╣реИред
рдЕрд╕рдВрддреБрд▓рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрдм
push
рдФрд░
pop
рдСрдкрд░реЗрд╢рди рдмреИрдЪреЛрдВ рдореЗрдВ рдЪрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ -
pop
рдмрд┐рдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ
push
, рддреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ
pop
рдмрд┐рдирд╛
push
- рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд┐рд╕реА рднреА рдареЛрд╕ рд▓рд╛рдн рдирд╣реАрдВ рджреЗрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреНрд▓рд╛рд╕рд┐рдХ рдЯреНрд░реЗрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рджрд░реНрд╢рди рд╣рд╛рдирд┐ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП ред
рд╕рдорддрд▓ рд╕рдВрдпреЛрдЬрди
рдЕрдм рддрдХ, рд╣рдордиреЗ рд▓реЙрдХ-рдлреНрд░реА рд╕реНрдЯреИрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереАред рдЕрдм рдПрдХ рдирд┐рдпрдорд┐рдд рд▓реЙрдХ-рдЖрдзрд╛рд░рд┐рдд рд╕реНрдЯреИрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
template <class T> class LockStack { std::stack<T *> m_Stack; std::mutex m_Mutex; public: void push( T& v ) { m_Mutex.lock(); m_Stack.push( &v ); m_Mutex.unlock(); } T * pop() { m_Mutex.lock(); T * pv = m_Stack.top(); m_Stack.pop() m_Mutex.unlock(); return pv; } };
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдПрдХ рдкреНрд░рддрд┐рдпреЛрдЧреА рдХреЗ рд╕рд╛рде, рдЗрд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдмрд╣реБрдд рдХрдо рд╣реЛрдЧрд╛ - рд╕реНрдЯреИрдХ рдХреЗ рд╕рднреА рдХреЙрд▓ рдореНрдпреВрдЯреЗрдХреНрд╕ рдкрд░ рдХреНрд░рдордмрджреНрдз рд╣реИрдВ, рд╕рдм рдХреБрдЫ рд╕рдЦреНрддреА рд╕реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?
рдпрджрд┐ рдПрди рдереНрд░реЗрдбреНрд╕ рдПрдХ рд╕рд╛рде рд╕реНрдЯреИрдХ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдореНрдпреВрдЯреЗрдХреНрд╕ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрдЧрд╛, рдмрд╛рдХреА рдЗрд╕рдХреЗ рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдореНрдпреВрдЯреЗрдХреНрд╕ рдкрд░ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдзрд╛рдЧреЗ рдЕрдкрдиреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдЙрдиреНрдореВрд▓рди рдмреИрдХ-рдСрдл, рдФрд░ рдЬреАрддрдиреЗ рд╡рд╛рд▓реЗ рдзрд╛рдЧреЗ (рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреЗ рдорд╛рд▓рд┐рдХ) рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдкрдиреЗ рднрд╛рдЗрдпреЛрдВ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдиреЗ
рдлреНрд▓реИрдЯ рд╕рдВрдпреЛрдЬрди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЖрдзрд╛рд░ рдмрдирд╛рдпрд╛, рдЬрд┐рд╕реЗ 2010 рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕ рджрд┐рди рддрдХ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдПрдХ рдлреНрд▓реИрдЯ рд╕рдВрдпреЛрдЬрди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде, рдПрдХ рдореНрдпреВрдЯреЗрдХреНрд╕ рдФрд░ рдкреНрд░рдХрд╛рд╢рди рд╕реВрдЪреА рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдереНрд░реЗрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдЖрдиреБрдкрд╛рддрд┐рдХ рд░реВрдк рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИред рд╕реНрдЯреИрдХ рдХреА рдкрд╣рд▓реА рдХреЙрд▓ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рдЕрдкрдиреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдереНрд░реЗрдб рд▓реЛрдХрд▓ рд╕реНрдЯреЛрд░реЗрдЬ (TLS) рдореЗрдВ рд╕реНрдерд┐рдд рдШреЛрд╖рдгрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЬрдм рдСрдкрд░реЗрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдереНрд░реЗрдб рдЕрдкрдиреЗ рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рдПрдХ рдЕрдиреБрд░реЛрдз рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ - рдСрдкрд░реЗрд╢рди (
push
рдпрд╛
pop
) рдФрд░ рдЗрд╕рдХреЗ рддрд░реНрдХ - рдФрд░ рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдореНрдпреВрдЯреЗрдХреНрд╕ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реНрдЯреНрд░реАрдо
рдПрдХ рдХреЙрдореНрдмрд┐рдирд░ рдмрди рдЬрд╛рддрд╛
рд╣реИ (рдХреЙрдореНрдмрд┐рдирд░, рдПрдХ
рдХрдВрдмрд╛рдЗрди рд░рдо рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП): рдпрд╣ рдШреЛрд╖рдгрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЛ рд╕реНрдХреИрди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ (рд╕реНрдЯреИрдХ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреЗ рдкрд╛рддреНрд░рддрд╛ рдХреЛ рдпрд╣рд╛рдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ), рдШреЛрд╖рдгрд╛ рд╕реВрдЪреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдкрд░рд┐рдгрд╛рдо рд▓рд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдЕрдВрдд рдореЗрдВ рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреЛ рдореБрдХреНрдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдереНрд░реЗрдб рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ (рдХрддрд╛рдИ) рдЬрдм рдХрдВрдмрд╛рдЗрдирдХрд░реНрддрд╛ рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд░рд┐рдХреЙрд░реНрдб рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред
рдШреЛрд╖рдгрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдУрд╡рд░рд╣реЗрдб рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдШреЛрд╖рдгрд╛рдУрдВ рдХреА рд╕реВрдЪреА рд╢рд╛рдпрдж рд╣реА рдХрднреА рдмрджрд▓рддреА рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╣рдореЗрдВ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдорд┐рд▓рддреА рд╣реИ рдЬрд╣рд╛рдВ рд▓реЙрдХ-рдлреНрд░реА рдкреНрд░рдХрд╛рд╢рди рд╕реВрдЪреА рд╕реНрдЯреИрдХ рдХреЗ рдХрд┐рдирд╛рд░реЗ рдкрд░ рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕реНрдЯреИрдХ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдШреЛрд╖рдгрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдореМрдЬреВрджрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рдпрд╛рдж рд╣реИ, рдзрд╛рд░рд╛рдУрдВ рдХреА рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдФрд░ рдЯреАрдПрд▓рдПрд╕ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдХреБрдЫ рд╕реВрдЪреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдерд┐рддрд┐ "рдЦрд╛рд▓реА" рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдереНрд░реЗрдб рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ (рд╕реНрдЯреИрдХ) рдХреЗ рд╕рд╛рде рдХреЛрдИ рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╕рдордп-рд╕рдордп рдкрд░, рдХреЙрдореНрдмрд┐рдиреЗрдЯрд░ рд▓рдВрдмреА рдирд┐рд╖реНрдХреНрд░рд┐рдп рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдШреЛрд╖рдгрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдлреЗрдВрдХ рджреЗрддрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП, рд╕реВрдЪреА рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП), рдЬрд┐рд╕рд╕реЗ рд╕реВрдЪреА рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдлреНрд▓реИрдЯ рд╕рдВрдпреЛрдЬрди рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЬрдЯрд┐рд▓ рд▓реЙрдХ-рдлреНрд░реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлреНрд▓реИрдЯ рд╕рдВрдпреЛрдЬрди рд╕реНрдЯреИрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЙрдиреНрдореВрд▓рди рдмреИрдХ-рдСрдл рдЬреЛрдбрд╝реЗрдВред рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ C ++ рдореЗрдВ рдлреНрд▓реИрдЯ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднреА рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рдо рд╣реИ: рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╢реЛрдз рдкрддреНрд░реЛрдВ рдореЗрдВ рдШреЛрд╖рдгрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдЖрдорддреМрд░ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЯреАрдПрд▓рдПрд╕ рдореЗрдВ рдЖрдкрдХреА рдЕрдкрдиреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╣реИред рдореИрдВ рд╕рднреА рдлреНрд▓реИрдЯ рд╕рдВрдпреЛрдЬрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХрд▓ рдкреНрд░рдХрд╛рд╢рди рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЧрддрд┐ рдХреЛ рди рдЦреЛрдПрдВред
рдЗрддрд┐рд╣рд╛рд╕ рд╕реНрдкрд┐рд░рд▓реНрд╕рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рддрд╛рд▓рд╛-рдореБрдХреНрдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкрд░ рдЕрдиреБрд╕рдВрдзрд╛рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд╛рдкрд╕ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ: 1990 рдХреЗ рджрд╢рдХ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдкрд╛рд░рдВрдкрд░рд┐рдХ рд▓реЙрдХ-рдЖрдзрд╛рд░рд┐рдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд▓реЙрдХ-рдлрд╝реНрд░реА рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпреЗ рдкреНрд░рдпрд╛рд╕ рд╕рдлрд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рднрд╛рд░реА рд▓реЙрдХ-рдлреНрд░реА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред рдЗрди рд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдареАрдХ рдпрд╣реА рдерд╛ рдХрд┐ - рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдкрд╣рд▓реЗ рдСрдкрд░реЗрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛, рддрд╛рдХрд┐ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдзрд╛рдЧреЗ рдЗрд╕реЗ рджреЗрдЦ рд╕рдХреЗрдВ рдФрд░ рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХреЗрдВред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдРрд╕реА "рдорджрдж" рдмрд▓реНрдХрд┐ рдПрдХ рдмрд╛рдзрд╛ рдереА: рдереНрд░реЗрдбреНрд╕ рдиреЗ рдПрдХ рд╣реА рдСрдкрд░реЗрд╢рди рдХреЛ рдПрдХ рд╕рд╛рде рдХрд┐рдпрд╛, рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдзрдХреНрдХрд╛ рдФрд░ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд┐рдпрд╛ред
рдЗрд╕рдиреЗ рдЬреЛрд░ рджреЗрдиреЗ рдХреА рдереЛрдбрд╝реА рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА - рд╕рдХреНрд░рд┐рдп рдорджрдж рд╕реЗ рд▓реЗрдХрд░ рджреВрд╕рд░реЗ рдХреЛ рдХрд╛рдо рд╕реМрдВрдкрдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХ рд╕рдлрд▓ рд╕реНрдЯреНрд░реАрдо - рдФрд░ рд╣рдореЗрдВ рдПрдХ рддреНрд╡рд░рд┐рдд рдлреНрд▓реИрдЯ рд╕рдВрдпреЛрдЬрди рд╡рд┐рдзрд┐ рдорд┐рд▓ рдЧрдИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реИ рдХрд┐ рд╕реНрдЯреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрддрдиреА рд╕рд░рд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛, рдЬрд╣рд╛рдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ рд╣реИ!
рдмреИрдХ-рдСрдл рд░рдгрдиреАрддрд┐рдпрд╛рдВ рд▓реЙрдХ-рдлреНрд░реА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рд▓рд╛рдЧреВ рд╣реЛрддреА
рд╣реИрдВ : рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди "рд╣рдо рд╕рдлрд▓ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ" рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдЕрдВрддрд╣реАрди рд▓реВрдк рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИ, рдФрд░ рд▓реВрдк рдмреЙрдбреА рдХреЗ рдЕрдВрдд рдореЗрдВ, рдпрд╛рдиреА, рдЬрдм рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдИ, рддреЛ рдпрд╣ рд╢рд╛рдирджрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдмреИрдХ-рдСрдл рдбрд╛рд▓реЗрдВ, рдЬреЛ рднрд╛рд░реА рднрд╛рд░ рдХреЗ рддрд╣рдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдВрдЯреЗрдирд░ рдбреЗрдЯрд╛ рдкрд░ рджрдмрд╛рд╡ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЙрдиреНрдореВрд▓рди рдмреИрдХ- рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ, рдФрд░ рдХреБрдЫ рд╣рдж рддрдХ, рдХрддрд╛рд░ рдореЗрдВред
рд╣рд╛рд▓ рдХреЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ,
рдлреНрд▓реИрдЯ рд╕рдВрдпреЛрдЬрди рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╡реГрддреНрддрд┐ рд╣реИ - рд▓реЙрдХ-рдлреНрд░реА рдФрд░ рджрд╛рдиреЗрджрд╛рд░ рд▓реЙрдХ-рдЖрдзрд╛рд░рд┐рдд рджреЛрдиреЛрдВред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрди рддрдХрдиреАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдорд┐рд▓реЗрдВрдЧреЗред
рд▓реЙрдХ-рдлреНрд░реА рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕рд╢реБрд░реБрдЖрддрдореВрд▓ рдмрд╛рддреЗрдВ:
рдЕрдВрджрд░:
рдмрд╛рд╣рд░ рд╕реЗ: