рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА: рдЗрддрд┐рд╣рд╛рд╕ рдФрд░ рд╡рд┐рдХрд╛рд╕

рдкрд░рд┐рднрд╛рд╖рд╛



рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╕рд╛рдЭрд╛ рд╕рдВрд╕рд╛рдзрди (рдореЗрдореЛрд░реА) рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ / рдереНрд░реЗрдбреНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд╕рд╛рде рддрд┐рд░рд╕реНрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:





рдЯреНрд░рд╛рдВрд╕рдПрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдереНрд░реЗрдбреНрд╕ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдХрдиреАрдХ рд╣реИред рдпрд╣ рдирд┐рд░реНрджреЗрд╢ рд╕рдореВрд╣реЛрдВ рдХреЛ рдкрд░рдорд╛рдгреБ рд▓реЗрдирджреЗрди рдореЗрдВ рдЕрд▓рдЧ рдХрд░рдХреЗ рд╕рдорд╡рд░реНрддреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдзрд╛рдЧреЗ рд╕рдорд╛рдирд╛рдВрддрд░ 1 рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рд╡реЗ рд╕реНрдореГрддрд┐ рдХреЗ рдПрдХ рд╣реА рдЯреБрдХрдбрд╝реЗ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд▓рд╛рд▓-рдХрд╛рд▓реЗ рдкреЗрдбрд╝ (рд╣реЗрдбрд░ рдореЗрдВ рдПрдиреАрдореЗрд╢рди) рдореЗрдВ рдиреЛрдбреНрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрдИ рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред

рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда
/* Move item from one list to another */ int move(list *from, list *to) { __transaction_atomic { node *n = pop(from); push(to, n); } }
      
      







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



рдпрджрд┐ рдбреЗрдЯрд╛ рд╡рд┐рд░реЛрдз рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд▓реЗрдирджреЗрди рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрди-рджреЗрди рдХреЛ рд░рджреНрдж рдХрд░рдирд╛ рдЙрди рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд▓реЗрди-рджреЗрди рдХреЗ рджреМрд░рд╛рди рдХрд┐рдП рдЧрдП рдереНрд░реЗрдб рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рд▓реЗрди-рджреЗрди рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ "рдЖрдкрд╛рддрдХрд╛рд▓реАрди рдирд┐рдХрд╛рд╕" рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рддрд╛рд▓реЗ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реЛрд▓рдмреИрдХред



рд▓реЗрди-рджреЗрди рд╕реНрдореГрддрд┐ рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ:



рд▓реЗрди-рджреЗрди рдХреА рд╕реНрдореГрддрд┐ рдПрдХ рдЪрд╛рдВрджреА рдХреА рдЧреЛрд▓реА рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдиреБрдХрд╕рд╛рди рднреА рд╣реИрдВ:





рддрдХрдиреАрдХ рдХрд╛ рдЬрдиреНрдо



рджрд╢рдХреЛрдВ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд▓реЗрдирджреЗрди рд╣реЛрддрд╛ рд░рд╣рд╛ рд╣реИред рдкрд╣рд▓реА рдмрд╛рд░, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рджреБрдирд┐рдпрд╛ рд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд▓реЗрдирджреЗрди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ 1980 рдХреЗ рджрд╢рдХ рдореЗрдВ рдкреИрджрд╛ рд╣реБрдЖред рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдореМрд░рд┐рд╕ рд╣реЗрд░рд▓реА , рд░рд╡рд┐ рд░рдЬрд╡рд╛рд░ , рдиреАрд░ рд╢рд╡рд┐рдЯ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рдмрдирд╛рдпрд╛ рдЧрдпрд╛ред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдзреНрдпрдпрдиреЛрдВ рд╕реЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА рдХреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛ рдХрд┐ рдЕрдЧрд▓реЗ 30 рд╡рд░реНрд╖реЛрдВ рддрдХ рдкреИрджрд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдд рдирд╣реАрдВ рдереЗ

1990 рдХреЗ рджрд╢рдХ рдореЗрдВ, рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХрд╛ рдкрд╣рд▓рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд╛рдордиреЗ рдЖрдпрд╛, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди 2000 рдХреЗ рджрд╢рдХ рдореЗрдВ рд╡рд╛рдкрд╕ рдЦреАрдВрдЪ рд▓рд┐рдП рдЧрдПред



рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓реЗрдирджреЗрди рдореЗрдореЛрд░реА, рдПрд╕рдЯреАрдПрдо)

рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓реЗрдирджреЗрди рд╕реНрдореГрддрд┐ рдХреЗ рдХрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмреАрдЪ, рдореИрдВ рдЪрд╛рд░ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдЧрд┐рддреБрдм рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ: JIghtuse / tm-рдкреНрд░рдпреЛрдЧреЛрдВ ред



Clojure
рдХреНрд▓реЛрдЬрд░ рдПрдХрдорд╛рддреНрд░ рдРрд╕реА рднрд╛рд╖рд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдХреЛрд░ рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдореБрдЦреНрдп рдПрд╕рдЯреАрдПрдо рдирд┐рд░реНрдорд╛рдг ref



(рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╕рдВрджрд░реНрдн рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдХреЗрд╡рд▓ рдПрдХ рд▓реЗрди-рджреЗрди рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ dosync



(рд▓реЗрдирджреЗрди рдмреНрд▓реЙрдХ)ред



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

рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда


рд▓рд┐рдВрдХ рд╕рдВрд╕реНрдХрд░рдг рдЖрд░реЗрдЦ рдПрдХ рдХреНрд▓реЛрдЬрд░ рд▓реЗрдирджреЗрди рдореЗрдВред



рд▓реЗрди-рджреЗрди 1 рдФрд░ 2 рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, ref v0



рд╕рдВрд╕реНрдХрд░рдг рдХреА рдПрдХ рдкреНрд░рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрди-рджреЗрди рдХреЗ рдЕрдВрджрд░, рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╣реИ рдЬреЛ ref



рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рд▓реЗрдирджреЗрди рдкрд╣рд▓реЗ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ ref



рдирдП рдореВрд▓реНрдп рдХреЗ ref



рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рджреМрдбрд╝ рдЬреАрддрддрд╛ рд╣реИред рдлрд┐рд░ рджреВрд╕рд░рд╛ рд▓реЗрди-рджреЗрди рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ ref



рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдЖрд░реЗрдЦ рдореЗрдВ рд▓рд╛рд▓ рддреАрд░), рдХреНрдпреЛрдВрдХрд┐ ref



рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╡рд╣ рдирд╣реАрдВ рдерд╛ рдЬреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓реЗрди-рджреЗрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, ref



рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рдПрдХ рдкреНрд░рддрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рдЪреВрдВрдХрд┐ рдХреЛрдИ рдЕрдиреНрдп рд▓реЗрди-рджреЗрди ref



рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджреВрд╕рд░реА рдмрд╛рд░, рд▓реЗрдирджреЗрди 2 рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИред

рд▓реЗрди-рджреЗрди 3 рдореЗрдВ рдЧрдгрдирд╛ ref



рдХреЗ рдореВрд▓реНрдп рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреБрдирд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИред



рдмреИрдВрдХ рдЦрд╛рддреЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:

рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда
рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рд╣реА рдзрд╛рдЧреЗ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдзрд╛рдЧрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред

 (def account1 (ref 100)) (def account2 (ref 0)) ;     'ref'  (deref refname): (deref account1) 100 ; @refname -  (deref refname) @account2 0 (defn transfer [amount from to] (dosync (alter from - amount) (alter to + amount))) (transfer 100 account1 account2) 100
      
      





рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдЖрд░рд╛рдо" рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдк рджрд┐рди рдХреЗ рд▓рд┐рдП рд▓реЗрдирджреЗрди рд▓реЙрдЧ рд░рдЦрддреЗ рд╣реИрдВред рд▓реЙрдЧ рдореЗрдВ рд▓реЗрдирджреЗрди рдХрд╛ рдХреНрд░рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрдВрддрд┐рдо рд╢реЗрд╖ рд░рд╛рд╢рд┐ рд╕рд╣реА рд╣реЛрдЧреАред рдпрджрд┐ рдЖрдкрдХреЛ $ 100 рдФрд░ $ 50 рдХреА рджреЛ рдХрд┐рд╕реНрддреЗрдВ рдорд┐рд▓рддреА рд╣реИрдВ, рддреЛ рд╡реЗ рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдЬрд░реНрдирд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рд╡рд╣ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред рджреЛ рд▓реЗрди-рджреЗрди рд╕реЗ рдпреЛрдЧрджрд╛рди рд╕рд░рд╛рд╣рдиреАрдп рд╣реИ, рдФрд░ рдХреНрд▓реЛрдЬрд░ рд╕рд┐рд░реНрдл рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА commute



рд╕рдВрдЪрд╛рд▓рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда
 (defn log-deposit [account amount] (dosync (println "Depositing $" amount " into account, balance now: " (commute account + amount)))) (def myaccount (ref 0)) (log-deposit myaccount 100) (log-deposit myaccount 50) ; (as good as) equivalent to (log-deposit myaccount 50) (log-deposit myaccount 100)
      
      





рд╣рд╛рд╕реНрдХреЗрд▓


рд╣рд╛рд╕реНрдХреЗрд▓ рдХрд╛ рд▓реЗрди-рджреЗрди рдореЗрдореЛрд░реА рдПрд╕рдЯреАрдПрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рдЬреЛ рд╣рд╛рд╕реНрдХреЗрд▓ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рдВрдХрд▓рди рдХреЗ рдЪрд░рдг рдореЗрдВ рд▓реЗрди-рджреЗрди рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЧрд▓рдд рдЙрдкрдпреЛрдЧ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рд╣рд╛рд╕реНрдХреЗрд▓ рдореЗрдВ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рд╣реИред рднрд╛рд╖рд╛ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯреНрд╕ рдФрд░ рд╢реБрджреНрдз рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рддреА рд╣реИред IO t



рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдХреЛ рдПрдХ рдХреНрд░рд┐рдпрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд╕реНрдХреЗрд▓ рдореЗрдВ рдкрд░рдорд╛рдгреБ рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрд░рд┐рдпрд╛ рд╢рдмреНрдж рд╕реЗ рдкрд╣рд▓реЗ рдкрд░рдорд╛рдгреБ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд╕рд╛рде рдПрдЯреЛрдорд┐рдХрд▓реА рджреЛ рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ:



atomically



, atomically



рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрддрд╛ рд╣реИ atomically :: STM a -> IO a



ред рдЯрд╛рдЗрдк STM a



рдП рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдПрдХ рддрд░реНрдХ рд╣реИред IO



рдХреНрд░рд┐рдпрд╛ рдХреА рддрд░рд╣, STM



рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреА рд╕реАрдорд╛ рдЕрдзрд┐рдХ рд╕рдВрдХреАрд░реНрдг рд╣реЛрддреА рд╣реИред рдЕрд╕рд▓ рдореЗрдВ, STM



рдХрд╛рд░реНрд░рд╡рд╛рдИ рд▓реЗрдирджреЗрди рдЪрд░ рдХреЛ рд▓рд┐рдЦрддреА рд╣реИ рдпрд╛ рдкрдврд╝рддреА TVar a



:



рдмреИрдВрдХ рдЦрд╛рддреЛрдВ рдХреЗ рдмреАрдЪ рдлрдВрдб рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдиреЗ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда
 import System.IO import Control.Concurrent.STM --          TVar   type Account = TVar Int withdraw :: Account -> Int -> STM () withdraw acc amount = do bal <- readTVar acc writeTVar acc (bal - amount) deposit :: Account -> Int -> STM () deposit acc amount = withdraw acc (- amount) transfer :: Account -> Account -> Int -> IO () --  'amount'   'from'   'to' transfer from to amount = atomically (do deposit to amount withdraw from amount) showAccount :: Account -> IO Int showAccount acc = atomically (readTVar acc) main = do from <- atomically (newTVar 200) to <- atomically (newTVar 100) transfer from to 50 v1 <- showAccount from v2 <- showAccount to putStrLn $ (show v1) ++ ", " ++ (show v2) --   "150, 150"
      
      





рд╕реНрдХрд╛рд▓рд╛


рд╕реНрдХрд╛рд▓рд╛ (рд╕реНрдХрд╛рд▓рд╛рд╕реНрдЯрдПрдо) рдХреЗ рд▓рд┐рдП рдПрд╕рдЯреАрдПрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣рд╛рд╕реНрдХреЗрд▓ рдФрд░ рдХреНрд▓реВрдЬреБрд░ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдерд╛ред Scala рдХреЗ рдЕрд▓рд╛рд╡рд╛, ScalaSTM рдХреЛ Java рдФрд░ Clojure рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЛрдХрдкреНрд░рд┐рдп рдЕрдХреНрдХрд╛ рдврд╛рдВрдЪреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

ScalaSTM рдПрдХ Ref



рд╕реЗрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рд▓реЗрдирджреЗрди рдХреЗ рднреАрддрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБрдУрдВ рдФрд░ Ref



рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдХрдИ рдереНрд░реЗрдб рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВред



рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдбрдмрд▓ рд▓рд┐рдВрдХ рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реВрдЪреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рд╕реНрдХрд╛рд▓рд╛ рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдПрдХрддреНрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛, рдореИрдВ рдЗрд╕ рдкрд╛рда рдХреЛ рдкрд╛рдардХ рдкрд░ рдЫреЛрдбрд╝рддрд╛ рд╣реВрдВред

рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда
Github рдкрд░ рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг: github.com/nbronson/scala-stm/blob/master/src/test/scala/scala/concurrent/stm/examples/ConcurrentIstList.scala



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



рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╕реВрдЪреА рдиреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ рд╕реВрдЪреА рдХреЗ рдкреНрд░рдореБрдЦ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВред рд╕реВрдЪреА рдкрд░рд┐рдкрддреНрд░ рд╣реИ: рдЬрдм рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕реВрдЪреА рд╕реВрдЪреА рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИред рдпреЗ рд╕рдВрдХреЗрдд рдХрднреА рднреА null



рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред



 import scala.concurrent.stm._ class ConcurrentIntList { private class Node(val elem: Int, prev0: Node, next0: Node) { val isHeader = prev0 == null val prev = Ref(if (isHeader) this else prev0) val next = Ref(if (isHeader) this else next0) } private val header = new Node(-1, null, null)
      
      





рдпрджрд┐ x



Ref



, рддреЛ x()



x



рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ x() = v



рдЗрд╕реЗ v



рдмрд░рд╛рдмрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

Ref



рдХреЗрд╡рд▓ рдкрд░рдорд╛рдгреБ рдмреНрд▓реЙрдХ (рд▓реЗрдирджреЗрди) рдХреЗ рдЕрдВрджрд░ рдкрдврд╝реЗ рдФрд░ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рд▓реЗрдирджреЗрди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

 def addLast(elem: Int) { atomic { implicit txn => val p = header.prev() val newNode = new Node(elem, p, header) p.next() = newNode header.prev() = newNode } }
      
      





рд╕реНрдХрд╛рд▓рд╛ рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреНрд░рддрд┐рдорд╛рдиреЛрдВ рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд▓рд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓реЗрдирджреЗрди рд╕реНрдореГрддрд┐ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рднрд╛рд╖рд╛ рдореЗрдВ рдореВрд▓ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдВ рд╣реИрдВред рдкреВрд░реНрд╡реЛрдХреНрдд рдЕрдХреНрдХрд╛ рдврд╛рдВрдЪрд╛ рдПрдЬреЗрдВрдЯреЛрдВ рдФрд░ рд▓реЗрдирджреЗрди рдПрдЬреЗрдВрдЯреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░рд┐рдХ рд╕реНрдореГрддрд┐ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрдВрдд рдореЗрдВ рдЙрдирдХреЗ рджрд┐рдорд╛рдЧ рдХреЛ рдЙрдбрд╝рд╛ рджреЗрдЧрд╛ред



C / C ++ (GCC 4.7+)


4.7 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдЬреАрд╕реАрд╕реА рд▓реЗрдирджреЗрди рд╕реНрдореГрддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рд▓рд┐рдмрд┐рдЯрдо рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ, -fgnu-tm (-mrtm, -mhle) рдзреНрд╡рдЬ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ C ++ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХреЗ рдорд╕реМрджреЗ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдорд╛рдирдХ рдореЗрдВ рдХрд┐рд╕реА рднрд╛рд╖рд╛ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ)ред



рдЕрдзрд┐рдХрд╛рдВрд╢ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд▓реЗрдирджреЗрди рд╕реНрдореГрддрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд▓реЗрдирджреЗрди рд╕реНрдореГрддрд┐ рддрдХрдиреАрдХреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдРрд╕реА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЛ рд╣рд╛рдЗрдмреНрд░рд┐рдб рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА рд╕рд┐рд╕реНрдЯрдо рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрдирдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЬреАрд╕реАрд╕реА рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢рд╛рдорд┐рд▓ рд╣реИред



рдХреАрд╡рд░реНрдб рднрд╛рд╖рд╛ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рд╣реИрдВ:





C рдореЗрдВ рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рдПрдХ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХреЛ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░реЗрдВрдЧреЗред

рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда
Github рдкрд░ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди: github.com/JIghtuse/tm-experiments/blob/master/histogram/src/hist.c



рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдЕрдкрдбреЗрдЯ рдЪрдХреНрд░ рдкреНрд░рддрд┐ рдПрдХ рд▓реЗрдирджреЗрди рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдпрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░) рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдХрдм рдФрд░ рдХреМрди рд╕реЗ рд▓реЗрдирджреЗрди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реИред

 #ifdef _USE_TSX __transaction_atomic { #endif for (i = 0; i < d->sz; ++i) { struct pixel p = d->pixels[i]; unsigned int luminance = rY * p.red + gY * p.green + bY * p.blue; #if defined _USE_TSX ++histogram[luminance/BORDER]; #elif defined _USE_MUTEX pthread_mutex_lock(&mut); ++histogram[luminance/BORDER]; pthread_mutex_unlock(&mut); #endif } #ifdef _USE_TSX } #endif
      
      







рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА, HTM)

рдХреЗрд╡рд▓ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░рд┐рдХ рд╕реНрдореГрддрд┐ рдХреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд▓рдЧреЗ рд╣реИрдВред



рд╕рди рд░реЙрдХ (SPARC v9) 2007-2008







рд╕рди рдорд╛рдЗрдХреНрд░реЛрд╕рд┐рд╕реНрдЯрдореНрд╕ рд╕реЗ рд░реЙрдХ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдЯреНрд░рд╛рдВрдЬреИрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА рдХреЗ рд▓рд┐рдП рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рдкреЛрд░реНрдЯ рд╡рд╛рд▓рд╛ рдкрд╣рд▓рд╛ рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдерд╛ред 64-рдмрд┐рдЯ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ SPARC v9 рдореЗрдВ 16 рдХреЛрд░ рдереЗред



2007 рдореЗрдВ, рдХрдВрдкрдиреА рдиреЗ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХреАред рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рджреЛ рдирдП рдирд┐рд░реНрджреЗрд╢, chkpt



рдФрд░ commit



рдФрд░ рдПрдХ рдирдпрд╛ cps



рд╕реНрдЯреЗрдЯрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рд▓реЗрди-рджреЗрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП chkpt <fail_pc>



рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ chkpt <fail_pc>



рдФрд░ рд▓реЗрдирджреЗрди рдХреЛ рдкреВрд░рд╛ commit



рд▓рд┐рдП commit



рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрдм рдХреЛрдИ рд▓реЗрди-рджреЗрди рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд╕рдВрдХреНрд░рдордг <fail_pc>



, рдЗрд╕ рд╕рдордп рдХреИрдВрд╕рд▓реЗрд╢рди рдХреЗ рдХрд╛рд░рдг рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП cps



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



2008 рдореЗрдВ, рд╕рди рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдиреЗ Transactional Memory Interface рдФрд░ Adaptive Transactional Memory Test Platform Simulator рдХреА рд╢реБрд░реБрдЖрдд рдХреАред рдУрд░реЗрдХрд▓ рджреНрд╡рд╛рд░рд╛ рд╕реВрд░реНрдп рдХреЗ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХреЗ рдмрд╛рдж, рд░реЙрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: тАЬрдЗрд╕ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рджреЛ рдЕрджреНрднреБрдд рдЧреБрдг рдереЗ: рдпрд╣ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдзреАрдорд╛ рдерд╛ рдФрд░ рдКрд░реНрдЬрд╛ рдХреА рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдорд╛рддреНрд░рд╛ рдХрд╛ рд╕реЗрд╡рди рдХрд░рддрд╛ рдерд╛ред рдпрд╣ рдЗрддрдирд╛ рдЧрд░реНрдо рдерд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреВрд▓рд┐рдВрдЧ рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рдХреЗ 12 рдЗрдВрдЪ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд░рдЦрдирд╛ рдкрдбрд╝рд╛, рддрд╛рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЬрд╝реНрдпрд╛рджрд╛ рдЧрд░рдо рди рд╣реЛред рдпрд╣ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдЧрд▓ рд╣реЛрдЧрд╛ред тАЭ реи



рдЖрдИрдмреАрдПрдо рдмреНрд▓реВрдЬреЗрди / рдХреНрдпреВ (рдкрд╛рд╡рд░рдкреАрд╕реА рдП 2) 2011





BlueGene / Q рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд╛рде Sequoia рд╕реБрдкрд░ рдХрдВрдкреНрдпреВрдЯрд░, рд▓реЗрди-рджреЗрди рд╕реНрдореГрддрд┐ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдкрд╣рд▓реА рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкреНрд░рдгрд╛рд▓реА рдереАред рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА PowerPC A2 рдкреНрд░реЛрд╕реЗрд╕рд░ (PowerPC BQC 16C) рдХреЗ рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХреЗ 32 рдПрдордмреА рдХреИрд╢ рдореЗрдВ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддреА рд╣реИред рдХреИрд╢ рдореЗрдВ рдбреЗрдЯрд╛ "рд╕рдВрд╕реНрдХрд░рдг" рд▓реЗрдмрд▓ рд╣реИ, рдФрд░ рдХреИрд╢ рдПрдХ рд╣реА рдбреЗрдЯрд╛ рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред



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



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



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



рд╕реНрдЯреЗрд░реЙрдпрдб рдкрд░ рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА рдПрд▓рдПрд▓ / рдПрд╕рд╕реА рд╣реЛрддреА рд╣реИ: рдереНрд░реЗрдбреНрд╕ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рдПрд▓рдПрд▓ рдСрдкрд░реЗрд╢рди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рдСрдкрд░реЗрд╢рди рдПрдЯреЛрдорд┐рдХ рд░реВрдк рд╕реЗ рд╕рднреА рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ рдпрд╛ рдЯреНрд░рд╛рдВрдЬреИрдХреНрд╢рди (рдЬреИрд╕реЗ рдПрд╕рд╕реА) рдХреЛ рд░рджреНрдж рдХрд░ рджреЗрддрд╛ рд╣реИред



рд╣реЙрдЯ рдЪрд┐рдкреНрд╕ рдкрд░ рдЯреНрд░рд╛рдВрд╕рдПрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА рдкрд░ рдЖрдИрдмреАрдПрдо рдХреЗ рдХрд╛рдо рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд░реВрдб рд╣рд╛рд░рд┐рдВрдЧ рдиреЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХрдВрдкрдиреА рдХреЛ рдХрдИ рдЧреИрд░-рддреБрдЪреНрдЫ рдЪреБрдиреМрддрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЗрд╕рдХреА рд╕рднреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╕реАрдорд╛рдПрдБ рд╣реИрдВ: рдпрд╣ рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕ рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ Sequoia рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╣рдореЗрдВ рд▓реЗрдирджреЗрди рд╕реНрдореГрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд▓рд╛рдн рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред



рдЖрдИрдмреАрдПрдо zEnterprise EC12 (Z / рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░) 2012



рд▓реЗрди-рджреЗрди рд╕реНрдореГрддрд┐ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкрд╣рд▓рд╛ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рд╕рд░реНрд╡рд░ред рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдИрдмреАрдПрдо рдиреЗ DB2 рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ z196 рдорд╢реАрди рдкрд░ 45% рдХреА рдкреНрд░рджрд░реНрд╢рди рд╡реГрджреНрдзрд┐ рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреНрдб рд╕рд░реНрд╡рд░ рднрд╛рд░ рдореЗрдВ рдкрд╛рдпрд╛ред



рдЖрдИрдмреАрдПрдо рдкрд╛рд╡рд░ 8 (рдкрд╛рд╡рд░) 2013





рдкрд╛рд╡рд░ 8 рдореЗрдореЛрд░реА рдХрдВрдЯреНрд░реЛрд▓рд░ рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд░реНрдиреЗрд▓ рд╕рдВрд╕реНрдХрд░рдг 3.9 рд╕реЗ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред

Power8 рдореЗрдВ HTM рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдереА, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИред



рдЗрдВрдЯреЗрд▓ рд╣реИрд╡реЗрд▓ (x86) 2013





2012 рдореЗрдВ, рдЗрдВрдЯреЗрд▓ рдиреЗ x86 рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рд╕реЗрдЯ рдореЗрдВ Transactional Syncrhonization Extensions (TSX) рдХреА рд╢реБрд░реБрдЖрдд рдХреА рдШреЛрд╖рдгрд╛ рдХреАред рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдХреЛрдб рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдЧреЛрдВ рдХреЛ рд▓реЗрдирджреЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

2013 рдореЗрдВ, рд╣рд╕рд╡реЗрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдПрдХ рдкреАрдврд╝реА рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде, рд▓реЗрди-рджреЗрди рдХреА рд╕реНрдореГрддрд┐ рдХреЗ рд▓рд┐рдП рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рдорд░реНрдерди рдкрд╣рд▓реА рдмрд╛рд░ рдЙрдкрднреЛрдХреНрддрд╛ рд╕реНрддрд░ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЧрдпрд╛ред



рд╣рд╕рд╡реЗрд▓, L1 рдбреЗрдЯрд╛ рдХреИрд╢ рдкрддреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдХреЗ рдХреИрд╢ рд▓рд╛рдЗрди рдЧреНрд░реИрдиреНрдпреБрд▓реИрд░рд┐рдЯреА рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдкрдврд╝ рдФрд░ рд▓рд┐рдЦрддрд╛ рд╣реИред рд╕рдВрдШрд░реНрд╖ рдХреИрд╢ рд╕реБрд╕рдВрдЧрддрддрд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдорд╛рдирдирд╛ тАЛтАЛрддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓реЗрдирджреЗрди рдХреЗ рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдХреИрд╢ рд╕реБрд╕рдВрдЧрддрддрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдмрд╣реБрдд рдХрд░реАрдм рд╣реИрдВ: рдпрджрд┐ рдореВрд▓реНрдп рдПрдХ рдзрд╛рдЧреЗ рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реЛрдВ рдореЗрдВ рдирд╣реАрдВ, рддреЛ рдХреБрдЫ рдПрдорд┐рд╕ рд╣реИред



TSX рдореЗрдВ рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВред рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд▓реЙрдХ рдПрд▓реАрд╢рди (рдПрдЪрдПрд▓рдИ) рд▓реЙрдХ-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдореЛрдВ рдХреЗ рд▓реЗрди-рджреЗрди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд╕рд░рд▓ рд░реВрдкрд╛рдВрддрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореМрдЬреВрджрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрдд рд╣реЛрдВрдЧреЗред рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд▓реЗрди-рджреЗрди рдореЗрдореЛрд░реА (RTM) рд▓реЗрдирджреЗрди рд╕реНрдореГрддрд┐ рдХрд╛ рдЕрдзрд┐рдХ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред



рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд▓реЙрдХ рдПрд▓реАрд╢рди


HLE рдореЗрдореЛрд░реА рдХреЗ рдПрдХ рд╕реЗрдХреНрд╢рди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдЙрдкрд╕рд░реНрдЧ рдЬреЛрдбрд╝рддрд╛ рд╣реИ - рдирд┐рд░реНрджреЗрд╢ рдЬреЛ рдХрд┐рд╕реА рднреА рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд▓реЗ рдирд┐рд░реНрджреЗрд╢ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ - рддрд╛рд▓рд╛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (XACQUIRE рдФрд░ XRELEASE, рдХреНрд░рдорд╢рдГ)ред



рд▓реЙрдХрд┐рдВрдЧ рдФрд░ рдЕрдирд▓реЙрдХрд┐рдВрдЧ рдХреЗ рдмреАрдЪ, рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдореЛрд░реА рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реНрдЯреНрд░реАрдо рдкрдврд╝рддрд╛ рдФрд░ рд▓рд┐рдЦрддрд╛ рд╣реИред рд╕рдВрдШрд░реНрд╖ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ - рдпрджрд┐ рджреЛ рдереНрд░реЗрдбреНрд╕ рдПрдХ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдПрдХ рдереНрд░реЗрдб рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдЬреЛ рджреВрд╕рд░рд╛ рд▓рд┐рдЦрддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЙрдХ рд╣реЛрдиреЗ рдкрд░ рд▓реЗрдирджреЗрди рдХреЛ рд░рджреНрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдирд┐рд╖реНрдкрд╛рджрди рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИред



рдЗрд╕ рдкреНрд░рдХрд╛рд░, HLE рдЖрдорддреМрд░ рдкрд░ рд╕реНрд╡реАрдХреГрдд рд▓реЙрдХ-рдЖрдзрд╛рд░рд┐рдд рдХреЛрдб рдХреЛ рдЖрд╢рд╛рд╡рд╛рджреА рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рдпрд╣ рдорд╛рди рд▓реЗрдЧрд╛ рдХрд┐ рдЙрд╕реЗ рдПрдХ рд▓реЙрдХ рдорд┐рд▓рд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рдереНрд░реЗрдбреНрд╕ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рддрдХ рдпрд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рд▓реЗрдирджреЗрди рд░рджреНрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



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



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



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



XACQUIRE / XRELEASE рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде, рд▓реЙрдХ рд▓реЗрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдорд╛рдирддреА рд╣реИ рдХрд┐ рд▓реЙрдХ рдЗрд╕рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддрд╛ рд╣реИ рдФрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред . , , 1, - 0. , . , .



HLE: 0 1 , 0. тАЬтАЭ .





рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд▓реЗрди-рджреЗрди рдореЗрдореЛрд░реА


RTM рдХреЛ рдЕрдзрд┐рдХ рднрд╛рдЧреАрджрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рдпрд╣ рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рддреАрди рдирдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИред рдЬрдмрдХрд┐ HLE рдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓реЗрди-рджреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓реЙрдХ-рдЖрдзрд╛рд░рд┐рдд рдХреЛрдб рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЪрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, RTM рд▓реЗрдирджреЗрди рдХреЗ рдкреНрд░рд╛рд░рдВрдн, рдЕрдВрдд рдФрд░ рд░реБрдХрд╛рд╡рдЯ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред рдереНрд░реЗрдб XBEGIN рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рд▓реЗрди-рджреЗрди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдПрдХ "рдлреЙрд▓рдмреИрдХ" рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд▓реЗрдирджреЗрди рдмрд╛рдзрд┐рдд рд╣реЛрдиреЗ рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдирджреЗрди XEND рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЗрдирджреЗрди рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдХреЛрдИ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдерд╛ рдпрд╛ рдЗрд╕реЗ рдирд┐рд░рд╕реНрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЧреБрдЬрд░рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдПрдХреНрд╕рдПрдмреАрдУрдЖрд░рдЯреА рдЕрдиреБрджреЗрд╢ рджреНрд╡рд╛рд░рд╛ рд▓реЗрдирджреЗрди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрд╛рдзрд┐рдд рд╣реИред

рд╕реАрдорд╛рдУрдВ рдФрд░ "рдмреИрдХ-рдЕрдк" рдХреЗ рд╕реНрдкрд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрд░рдЯреАрдПрдо рдЖрдкрдХреЛ рдПрдЪрдПрд▓рдИ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЗрдирджреЗрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ, RTM рд▓реЗрдирджреЗрди рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ред



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



рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореМрдЬреВрджрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЬреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред

рдЕрдиреБрд╡рд╛рдж, рд╢реИрд▓реАрд╡рд┐рдЬреНрдЮрд╛рди рдФрд░ рдЯрд╛рдЗрдкреЛрд╕ рдореЗрдВ рдЕрд╢реБрджреНрдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рдВрджреЗрд╢ рдореЗрдВ рд▓рд┐рдЦреЗрдВред



рдиреЛрдЯ



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


рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ






All Articles