рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ

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

C #


рд╕реА # рдореЗрдВ, рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рджреЛ рд╡рд░реНрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ: System рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ WeakReference рдФрд░ WeakReference<T> ред рдпреЗ рд╡рд░реНрдЧ рдЗрд╕ рдорд╛рдпрдиреЗ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рджреВрд╕рд░рд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдпрд╣ рдЖрдкрдХреЛ рдЙрд╕ рд╡рд╕реНрддреБ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд▓рд┐рдВрдХ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдирдХреЗ рдкрд╛рд╕ рдЙрд╕ рд╡рд╕реНрддреБ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рд▓рд┐рдВрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ: рдЙрдирдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЧреБрдг IsAlive рдФрд░ Target , рдФрд░ рджреВрд╕рд░рд╛ - рддрд░реАрдХреЗ TryGetTarget рдФрд░ SetTarget ред
рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, C # рдЖрдкрдХреЛ рдпрд╣ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмрдирд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдХреМрди рд╕реА рд╡рд╕реНрддреБред рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдореЗрдВ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рднреА рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЯрд╛рдЗрдк bool рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ: рдпрджрд┐ рдЗрд╕рдХрд╛ рдорд╛рди false , рддреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ true , рддреЛ рд▓рд┐рдВрдХ рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ PhantomReference рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ред C # рдореЗрдВ, рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдореЗрдВ рдлрд╝рд╛рдЗрдирд▓реАрдЬрд╝рд░ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдЬрд▓реНрджреА рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╕реА ++


C ++ рдореЗрдВ, std::weak_ptr , рдЬрд┐рд╕реЗ std::shared_ptr рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХреА рдЧрдИ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ lock рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдордЬрдмреВрдд рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:
 #include <iostream> #include <memory> using namespace std; void print_weak(weak_ptr<int> w) { if (auto s = w.lock()) { cout << *s << endl; } else { cout << "   " << endl; } } int main(int argc, char *argv[]) { shared_ptr<int> s(new int(123)); weak_ptr<int> w(s); print_weak(w); s = NULL; print_weak(w); } 


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


рдХрдИ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╣рд╛рд╕реНрдХреЗрд▓ рдкрдВрдЪрд╛рдВрдЧреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рд╕рднреА рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ Weak рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реИрдВ, рдЬреЛ System.Mem.Weak рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред рд╣рд╛рд╕реНрдХреЗрд▓ рдореЗрдВ, рдПрдХ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдХрдо рд╕реЗ рдХрдо рддрдм рддрдХ рдореМрдЬреВрдж рд░рд╣реЗрдЧрд╛ рдЬрдм рддрдХ рдХреБрдВрдЬреА рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдПрдХ рдЕрдВрддрд┐рдо рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рднреВрд▓" рдФрд░ рдлрд╛рдЗрдирд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдЕрднреА рднреА рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред addFinalizer рдлрд╝рдВрдХреНрд╢рди рдмрд╕ рдпрд╣реА addFinalizer рд╣реИред рдПрдХ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, mkWeak рдФрд░ mkWeakPtr ред

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:
 import Control.Exception import System.Mem.Weak main = do l <- getLine mkWeakPtr l (Just $ putStrLn "   ") evaluate $ sum [1..100000] 


рдЬрд╛рд╡рд╛


рдЬрд╛рд╡рд╛ рдореЗрдВ, рдПрдХ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдПрдХ рдЕрд▓рдЧ рд╡рд╕реНрддреБ рд╣реИ, рдФрд░ рдЬрд┐рд╕ рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ get рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирд┐рдпрдорд┐рдд рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ 3 рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ: рд╕реЙрдлреНрдЯ рд▓рд┐рдВрдХ ( java.lang.ref рдореЗрдВ SoftReference рдХреНрд▓рд╛рд╕), рд╕рд╛рдзрд╛рд░рдг рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ ( WeakReference ) рдФрд░ рдлреИрдВрдЯрдо рд▓рд┐рдВрдХ ( PhantomReference )ред рд╡реЗ рдЙрд╕ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдРрд╕реЗ рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдореБрдХреНрдд рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд░рдо рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рд╣реИ, рддреЛ рдЗрд╕реЗ рддрднреА рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдвреЗрд░ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЦрд╛рд▓реА рд╕реНрдерд╛рди рди рд╣реЛред рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓рд┐рдВрдХ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреИрд╢ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИрдВред рдЬрдм рд▓рд┐рдВрдХ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕рд╛рдзрд╛рд░рдг рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдлреИрдВрдЯрдо рд╡рд╛рд▓реЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВ: рдкрд╣рд▓рд╛ рдлрд╝рд╛рдЗрдирд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЙрд╕рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рдореЗрдореЛрд░реА рдлрд╝реНрд░реА рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗред рдЕрдВрддрд┐рдо рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, PhantomReference рд▓рд┐рдП рдкрд╛рдардХ рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрд╢рд╛ null ред рдЙрдирд╕реЗ рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд▓рд┐рдВрдХ рдХрддрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрд╣реБрдд рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╢реВрдиреНрдп рдкрд░ рд░реАрд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓рд╛рднрд╣реАрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬрд╛рд╡рд╛ рдЖрдкрдХреЛ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрдирд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдк рдПрдХ рд╡рд┐рд╢реЗрд╖ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдПрдХ рд▓рд┐рдВрдХ рдХрддрд╛рд░ ( ReferenceQueue ) - рдФрд░ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╡реЗ рд╢реВрдиреНрдп рд╣реЛрдиреЗ рдкрд░ рдЦреБрдж рдХреЛ рд╡рд╣рд╛рдВ рдЬреЛрдбрд╝ рд▓реЗрдВред рдЕрдм рдЖрдк рд╕рднреА рд▓рд┐рдВрдХ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдХрддрд╛рд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрд╛рд╡рд╛ рдореЗрдВ рднреА рдПрдХ рдХрдордЬреЛрд░ WeakHashMap рд╡рд░реНрдЧ рд╣реИ - рдХрдордЬреЛрд░ рдкреНрд░рдореБрдЦ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рд╛рде HashMap рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧред

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:
 import java.lang.ref.*; class WeakRefTest implements Runnable { //  ,    // ,     . public static void printWhenUnreachable(Object obj) { ReferenceQueue<Object> queue = new ReferenceQueue<Object>(); WeakReference<Object> ref = new WeakReference<Object>(obj, queue); new Thread(new WeakRefTest(ref, queue)).start(); } private final WeakReference<Object> ref; private final ReferenceQueue<Object> queue; private WeakRefTest(WeakReference<Object> ref, ReferenceQueue<Object> queue) { this.ref = ref; this.queue = queue; } public void run() { try { queue.remove(); System.out.println("   "); } catch (InterruptedException e) { throw new RuntimeException(e); } } } 

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

рд▓реБрдЖ


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

рдкрд░реНрд▓


рдкрд░реНрд▓ рдореЗрдВ, Scalar::Util рдкреИрдХреЗрдЬ рд╕реЗ weaken рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рд▓рд┐рдВрдХ рдХреЛ рдХрдордЬреЛрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрджрд┐ рдЖрдк рдПрдХ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЙрдкреА рдПрдХ рдирд┐рдпрдорд┐рдд рд▓рд┐рдВрдХ рд╣реЛрдЧреАред

рдЕрдЬрдЧрд░


рдкрд╛рдпрдерди рдХрдордЬреЛрд░ рд╕рдВрджрд░реНрднреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдЙрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдЗрдирдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╕реНрдЯрдо рдХреНрд▓рд╛рд╕реЗрд╕ рдФрд░ рдХреБрдЫ рдмрд┐рд▓реНрдЯ-рдЗрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд╛рдпрдерди рдореЗрдВ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП 2 рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ: ref рд╡рд░реНрдЧ ( weakref рд╡рд░реНрдЧ рдкреИрдХреЗрдЬ) рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╡рд╕реНрддреБ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдк рд╕реАрдзреЗ proxy рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдк рдПрдХ рдЕрдВрддрд┐рдо рд░реВрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ (рд╕рд╛рдзрд╛рд░рдг, рд╡реИрд╕реЗ, рднреА)ред
рдЬрд╛рд╡рд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдкрд╛рдпрдерди рдореЗрдВ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рд╡рд╛рд▓реЗ 3 рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рд╣реИрдВ: WeakSet , WeakKeyDictionary рдФрд░ WeakValueDictionary ред

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:
 # -*- coding: utf8 -*- from weakref import * def finalizer(ref): print("   ") obj = set() reference = ref(obj, finalizer) del obj 

рдЬрд╛рд╡рд╛ рдореЗрдВ, рдпрджрд┐ рд▓рд┐рдВрдХ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЧрд╣рд░реЗ рд▓рд╛рд▓ рд░рдВрдЧ рдХрд╛


рд░реВрдмреА рдореЗрдВ, рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдХреЛ рдХреЗрд╡рд▓ WeakRef рд╡рд░реНрдЧ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ Python рдореЗрдВ proxy рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдпрд╛рдиреА рдПрдХ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдЖрдк рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рдеред рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрдпрд╛ рдХрдордЬреЛрд░ рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдПрдХ рдХрдордЬреЛрд░ weakref_alive? рд╡рд┐рдзрд┐ рд╣реИ weakref_alive? , рдЬреЛ true рдЕрдЧрд░ рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рд╡рд╕реНрддреБ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИ, рдЕрдиреНрдпрдерд╛ false ред

UPD: рд╕реЙрд░реНрдЯ рдХреА рдЧрдИ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╡рд░реНрдгрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, C # рдФрд░ Lua рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рдЬреЛ рдХрд┐ рдкрдВрдЪрд╛рдВрдЧреЛрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред

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


All Articles