{"id":491753,"date":"2026-08-21T12:52:20","date_gmt":"2026-08-21T12:52:20","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=491753"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=491753","title":{"rendered":"\u0413\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0438\u0437\u043d\u0443\u0442\u0440\u0438, \u0447\u0430\u0441\u0442\u044c 2"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u042d\u0442\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0435\u0440\u0438\u0438 \u043f\u0440\u043e \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0438 \u0440\u0430\u043d\u0442\u0430\u0439\u043c Go. \u0412 \u043d\u0435\u0439 \u0442\u0440\u0438 \u0441\u044e\u0436\u0435\u0442\u0430: \u0441\u0442\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0435\u0442 \u043f\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u0430\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0442; \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b; \u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0441\u043b\u043e\u0432\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u0430\u043c\u043f\u0430 \u043f\u0430\u043d\u0438\u043a\u0438. \u041f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430, \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u0442\u043e\u043a\u0438 \u041e\u0421 \u0434\u043e\u0440\u043e\u0433\u0438\u0435 \u0438 \u043a\u0430\u043a Go \u0434\u043e\u0448\u0435\u043b \u0434\u043e \u0441\u0445\u0435\u043c\u044b GMP: \u043e\u043d\u0430 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430, \u043d\u043e \u0442\u0430\u043c \u0437\u0430\u0432\u044f\u0437\u043a\u0430 \u0432\u0441\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438.<\/p>\n<p>\u041f\u043b\u0430\u043d \u0441\u0435\u0440\u0438\u0438:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/1070050\/\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u0442\u043e\u043a\u0438 \u041e\u0421 \u043d\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u043a\u0430\u043a Go \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b GMP<\/a><\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u044e\u0449\u0438\u0439 \u0441\u0442\u0435\u043a, \u0441\u0438\u0433\u043d\u0430\u043b SIGURG \u0438 \u0436\u0438\u0437\u043d\u044c \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b.<\/strong><\/p>\n<\/li>\n<li>\n<p><s>syscall, netpoll, \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u0440\u0443\u0433 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0438 \u0441\u0432\u0435\u0436\u0438\u0439 Go<\/s> <strong><em>\u0421\u043a\u043e\u0440\u043e\u2026<\/em><\/strong><\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u043f\u0435\u0440\u0435\u0441\u043a\u0430\u0437 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043f\u0440\u0438\u0448\u0435\u043b \u0441\u0440\u0430\u0437\u0443 \u0441\u044e\u0434\u0430. \u0413\u043e\u0440\u0443\u0442\u0438\u043d\u0430: \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 <code>g<\/code> \u043f\u043b\u044e\u0441 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0441\u0442\u0435\u043a \u0432 \u043a\u0443\u0447\u0435 Go, \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0435\u0435 \u043f\u043e\u0442\u043e\u043a \u041e\u0421 (M), \u0430 \u043f\u0440\u0430\u0432\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c Go-\u043a\u043e\u0434 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f P, \u0438 \u0438\u0445 \u0440\u043e\u0432\u043d\u043e GOMAXPROCS. \u0412 Go 1.2 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0442\u044c \u0445\u0430\u043a\u043e\u043c: \u0432 \u043f\u043e\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0442\u0435\u043a\u0430 \u043f\u0438\u0448\u0443\u0442 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0436\u0435 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0443\u0432\u043e\u0434\u0438\u0442 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a. \u0414\u044b\u0440\u0430 \u0445\u0430\u043a\u0430: \u0446\u0438\u043a\u043b \u0431\u0435\u0437 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043d\u0435\u0443\u0431\u0438\u0432\u0430\u0435\u043c. \u041d\u0430 \u044d\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043c\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c.<\/p>\n<p>TL;DR \u0434\u043b\u044f \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u044e\u0449\u0438\u0445: \u0441\u0442\u0435\u043a\u0438 Go \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0438\u0441\u044c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u0431\u043e\u043b\u0435\u043b\u0438 \u00ab\u0433\u043e\u0440\u044f\u0447\u0438\u043c \u0440\u0430\u0441\u0449\u0435\u043f\u043b\u0435\u043d\u0438\u0435\u043c\u00bb (hot split), \u0432 1.3 \u0438\u0445 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0446\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0438 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c\u044b\u043c\u0438, \u0432 1.4 \u0443\u0436\u0430\u043b\u0438 \u0434\u043e 2 \u041a\u0411. \u0421\u0442\u0435\u043a \u0440\u0430\u0441\u0442\u0435\u0442 \u0443\u0434\u0432\u043e\u0435\u043d\u0438\u0435\u043c \u0434\u043e \u043f\u043e\u0442\u043e\u043b\u043a\u0430 \u0432 1 \u0413\u0411, \u0430 \u0441\u0436\u0438\u043c\u0430\u0435\u0442 \u0435\u0433\u043e \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043c\u0443\u0441\u043e\u0440\u0430. \u0421 1.14 \u0446\u0438\u043a\u043b \u0431\u0435\u0437 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0432\u0435\u0447\u0435\u043d: \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0441\u0442\u0440\u0435\u043b\u044f\u0435\u0442 \u0432 \u043f\u043e\u0442\u043e\u043a \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c SIGURG \u0438 \u043f\u043e\u0434\u0434\u0435\u043b\u044b\u0432\u0430\u0435\u0442 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0413\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0440\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 <code>newproc<\/code>, \u0441\u043f\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 <code>gopark<\/code>, \u0443\u043c\u0438\u0440\u0430\u0435\u0442 \u0432 <code>goexit<\/code> \u0438 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u0437 \u043f\u0443\u043b\u0430: \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043d\u0430 \u043a\u0430\u043d\u0430\u043b\u0435 \u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0438 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u0442 \u043f\u043e\u0442\u043e\u043a.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/573\/791\/f14\/573791f14989b05eed9ed02f5a41552b.png\" alt=\"\u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0447\u0430\u0441\u0442\u0438: 2014-2020 \u043d\u0430 \u043e\u0431\u0449\u0435\u0439 \u043b\u0435\u043d\u0442\u0435 \u0441\u0435\u0440\u0438\u0438\" width=\"1170\" height=\"497\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/573\/791\/f14\/573791f14989b05eed9ed02f5a41552b.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/573\/791\/f14\/573791f14989b05eed9ed02f5a41552b.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0447\u0430\u0441\u0442\u0438: 2014-2020 \u043d\u0430 \u043e\u0431\u0449\u0435\u0439 \u043b\u0435\u043d\u0442\u0435 \u0441\u0435\u0440\u0438\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0441\u0435 \u0437\u0430\u043c\u0435\u0440\u044b, \u043a\u0430\u043a \u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438, \u0441\u043d\u044f\u0442\u044b \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435: Intel Core i9-14900KF (24 \u044f\u0434\u0440\u0430, 32 \u043f\u043e\u0442\u043e\u043a\u0430), Linux, Go 1.27.0. \u041a\u043e\u0434 \u0434\u0435\u043c\u043e \u043b\u0435\u0436\u0438\u0442 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 <a href=\"https:\/\/github.com\/dsbasko\/sandbox-gorutines\" rel=\"noopener noreferrer nofollow\">dsbasko\/sandbox-gorutines<\/a>: \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0442\u0430\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0434\u0435\u043c\u043e \u0432 \u0442\u0435\u043a\u0441\u0442\u0435. \u0426\u0438\u0442\u0430\u0442\u044b \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u0434\u0430\u044e \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0440\u044f\u0434\u043e\u043c. \u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u043e\u0438\u0442 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0444\u0430\u0439\u043b \u0438 \u0441\u0442\u0440\u043e\u043a\u0443, \u0438 \u0432\u0435\u0434\u0435\u0442 \u043e\u043d\u0430 \u043d\u0430 \u0442\u0435\u0433 <code>go1.27.0<\/code>, \u0430 \u043d\u0435 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0432\u0435\u0442\u043a\u0443. \u0412\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u0433\u0430 \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u043e\u043a \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b.<\/p>\n<h3>Go 1.3-1.5: \u0441\u0442\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u0435\u0442 \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0442\u044c<\/h3>\n<p>\u041f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c \u0444\u0430\u043a\u0442\u043e\u043c: \u0432 Go 1.2 \u0441\u0442\u0435\u043a \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0432\u044b\u0440\u043e\u0441 \u0441 4 \u0434\u043e 8 \u041a\u0411, \u0445\u043e\u0442\u044f \u043e\u0431\u0435\u0449\u0430\u043b\u0438 \u0434\u0435\u0448\u0435\u0432\u0438\u0437\u043d\u0443. \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043e\u0442 \u0447\u0435\u0433\u043e \u044d\u0442\u0438\u043c \u0440\u043e\u0441\u0442\u043e\u043c \u043e\u0442\u043a\u0443\u043f\u0430\u043b\u0438\u0441\u044c.<\/p>\n<p>\u0414\u043e Go 1.3 \u0441\u0442\u0435\u043a \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u043d\u0435 \u0431\u044b\u043b \u0446\u0435\u043b\u044c\u043d\u044b\u043c \u043a\u0443\u0441\u043a\u043e\u043c \u043f\u0430\u043c\u044f\u0442\u0438. \u041e\u043d \u0431\u044b\u043b \u0446\u0435\u043f\u043e\u0447\u043a\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432: \u043a\u043e\u0433\u0434\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u043c\u0435\u0441\u0442\u0430, \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0432\u044b\u0434\u0435\u043b\u044f\u043b \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442, \u0430 \u0432 \u0435\u0433\u043e \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0439 \u0448\u0430\u043f\u043a\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0439. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0430\u0441\u044c, \u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0442\u0443\u0442 \u0436\u0435 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u043b\u0441\u044f, \u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u043f\u0440\u0435\u0436\u043d\u0438\u0439 \u043a\u0443\u0441\u043e\u043a. \u0417\u0432\u0443\u0447\u0438\u0442 \u044d\u043a\u043e\u043d\u043e\u043c\u043d\u043e: \u0441\u0442\u0435\u043a \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043c\u043e\u0442\u0440\u0438, \u0433\u0434\u0435 \u044d\u0442\u0430 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u044f \u0432\u0437\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c \u0446\u0438\u043a\u043b \u043d\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0438 \u0432\u044b\u0437\u043e\u0432 \u044d\u0442\u043e\u0442 \u043f\u0440\u0438\u0448\u0435\u043b\u0441\u044f \u0440\u043e\u0432\u043d\u043e \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430. \u041a\u0430\u0436\u0434\u0430\u044f \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f: \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u0435\u0433\u043c\u0435\u043d\u0442, \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438\u0437 \u0442\u0440\u0435\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439, \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f, \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u0441\u0435\u0433\u043c\u0435\u043d\u0442. \u041c\u0438\u043b\u043b\u0438\u043e\u043d \u043f\u0430\u0440 \u00ab\u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c\u00bb \u043d\u0430 \u043f\u0443\u0441\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435. \u042d\u0442\u0443 \u0431\u043e\u043b\u0435\u0437\u043d\u044c \u043d\u0430\u0437\u0432\u0430\u043b\u0438 hot split, \u0433\u043e\u0440\u044f\u0447\u0435\u0435 \u0440\u0430\u0441\u0449\u0435\u043f\u043b\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0417\u043b\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0442\u043e, \u0447\u0442\u043e \u0431\u043e\u043b\u0435\u0437\u043d\u044c \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0430. \u041a\u043e\u0434 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0435\u043d, \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435, \u0430 \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u043e\u0434\u043d\u043e\u0439 \u0431\u0435\u0437\u043e\u0431\u0438\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u0441\u0434\u0432\u0438\u0433\u0430\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430, \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u0432\u0434\u0432\u043e\u0435 \u0438\u043b\u0438 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0442\u0440\u043e\u0435. \u0420\u043e\u0441\u0442 \u0441\u0442\u0435\u043a\u0430 \u0434\u043e 8 \u041a\u0411 \u0432 Go 1.2 (\u0442\u0430 \u0441\u0430\u043c\u0430\u044f \u00abreasonable stopgap\u00bb, \u0440\u0430\u0437\u0443\u043c\u043d\u0430\u044f \u0437\u0430\u0442\u044b\u0447\u043a\u0430) \u0441\u043d\u0438\u0436\u0430\u043b \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0443, \u043d\u043e \u043d\u0435 \u0443\u0431\u0438\u0440\u0430\u043b \u0435\u0435.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2f2\/b0a\/7ec\/2f2b0a7ec36cc3f2e3bc4f63c19060a7.png\" alt=\"Hot split: \u0446\u0438\u043a\u043b \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\" width=\"1170\" height=\"686\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/2f2\/b0a\/7ec\/2f2b0a7ec36cc3f2e3bc4f63c19060a7.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2f2\/b0a\/7ec\/2f2b0a7ec36cc3f2e3bc4f63c19060a7.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Hot split: \u0446\u0438\u043a\u043b \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430<\/figcaption><\/div>\n<\/figure>\n<p>Go 1.3 \u0432 \u0438\u044e\u043d\u0435 2014 \u0433\u043e\u0434\u0430 \u0443\u0431\u0440\u0430\u043b \u043f\u0440\u0438\u0447\u0438\u043d\u0443. \u0418\u0437 release notes:<\/p>\n<blockquote>\n<p>Go 1.3 has changed the implementation of goroutine stacks away from the old, \u201csegmented\u201d model to a contiguous model. When a goroutine needs more stack than is available, its stack is transferred to a larger single block of memory.<\/p>\n<\/blockquote>\n<p>\u0421\u0442\u0435\u043a \u0441\u0442\u0430\u043b \u043e\u0434\u043d\u0438\u043c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u043c \u0431\u043b\u043e\u043a\u043e\u043c, \u0430 \u043f\u0440\u0438 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0435 \u043c\u0435\u0441\u0442\u0430 \u043e\u043d \u043d\u0435 \u043f\u0440\u0438\u0448\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0433\u043c\u0435\u043d\u0442, \u0430 \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0435\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0432 \u0431\u043b\u043e\u043a \u043f\u043e\u0431\u043e\u043b\u044c\u0448\u0435. \u0413\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0442, \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0435\u0442 \u0438 hot split. \u0422\u0435\u043c \u0436\u0435 \u0440\u0435\u043b\u0438\u0437\u043e\u043c, \u043a \u0441\u043b\u043e\u0432\u0443, \u0437\u0430\u043a\u0440\u044b\u043b\u0441\u044f \u0434\u043e\u043b\u0433 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438: \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c P \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u0430 \u0436\u0438\u0442\u044c \u043f\u043e\u0434 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u043c \u043c\u044c\u044e\u0442\u0435\u043a\u0441\u043e\u043c \u0438 \u0441\u0442\u0430\u043b\u0430 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c lock-free \u043a\u043e\u043b\u044c\u0446\u043e\u043c \u043d\u0430 256 \u0441\u043b\u043e\u0442\u043e\u0432, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043b\u044e\u0431\u044f\u0442 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u0445.<\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u00ab\u043f\u0435\u0440\u0435\u0435\u0437\u0434\u00bb \u0441\u0442\u0435\u043a\u0430. \u0422\u0443\u0442 \u0434\u0432\u0430 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430, \u0438 \u043e\u0431\u0430 \u0441\u0442\u043e\u044f\u0442 \u0440\u0430\u0437\u0431\u043e\u0440\u0430.<\/p>\n<h4>\u0414\u0432\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/h4>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0443\u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u0442\u0435\u043a\u0430 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442. \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u044f \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u043f\u0440\u043e\u043b\u043e\u0433: \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443. \u0412\u043e\u0442 \u043e\u043d\u0430 \u0432\u0441\u044f, \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/stack.go#L24-L27\" rel=\"noopener noreferrer nofollow\"><code>stack.go:24<\/code><\/a>):<\/p>\n<blockquote>\n<p>Each function compares its stack pointer against g-&gt;stackguard to check for overflow.<\/p>\n<\/blockquote>\n<p>\u041a\u0430\u0436\u0434\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0442\u0435\u043a\u0430 \u0441 \u043f\u043e\u043b\u0435\u043c <code>stackguard0<\/code> \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b (\u043a\u0440\u0430\u0441\u043d\u043e\u0439 \u0447\u0435\u0440\u0442\u043e\u0439 \u0447\u0443\u0442\u044c \u0432\u044b\u0448\u0435 \u0434\u043d\u0430 \u0441\u0442\u0435\u043a\u0430). \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0438\u0436\u0435 \u0447\u0435\u0440\u0442\u044b: \u043c\u0435\u0441\u0442\u0430 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442, \u043f\u0440\u044b\u0433\u0430\u0435\u043c \u0432 <code>morestack<\/code>. \u0422\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u0441\u0442\u0435\u043a \u043f\u043e\u0442\u043e\u043a\u0430 \u0438 \u0437\u043e\u0432\u0435\u0442 <code>newstack()<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0431\u043b\u043e\u043a.<\/p>\n<p>\u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0440\u0430\u0441\u0442\u0438? \u0412\u0434\u0432\u043e\u0435 (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/stack.go#L1177-L1179\" rel=\"noopener noreferrer nofollow\"><code>stack.go:1177<\/code><\/a>):<\/p>\n<pre><code class=\"go\">\/\/ src\/runtime\/stack.go:1177 (Go 1.27), \u0444\u0443\u043d\u043a\u0446\u0438\u044f newstack\/\/ Allocate a bigger segment and move the stack.oldsize := gp.stack.hi - gp.stack.lonewsize := oldsize * 2<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043d\u0430\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442 \u0432\u044b\u0431\u043e\u0440 (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/stack.go#L1045\" rel=\"noopener noreferrer nofollow\"><code>stack.go:1045<\/code><\/a>): \u00abStack growth is multiplicative, for constant amortized cost\u00bb (\u0440\u043e\u0441\u0442 \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0438\u043a\u0430\u0442\u0438\u0432\u043d\u044b\u0439, \u0440\u0430\u0434\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u0430\u043c\u043e\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0446\u0435\u043d\u044b). \u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0435\u0440\u0435\u0435\u0437\u0434 \u0432\u0434\u0432\u043e\u0435 \u0434\u043e\u0440\u043e\u0436\u0435, \u043d\u043e \u0441\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u0434\u0432\u043e\u0435 \u0440\u0435\u0436\u0435, \u0438 \u0441\u0440\u0435\u0434\u043d\u044f\u044f \u0446\u0435\u043d\u0430 \u0431\u0430\u0439\u0442\u0430 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043e\u0439. \u0421\u043e \u0441\u043b\u0430\u0439\u0441\u0430\u043c\u0438 \u0437\u0430\u043a\u043e\u043d \u043f\u043e\u0445\u043e\u0436, \u043d\u043e \u043d\u0435 \u0442\u043e\u0442 \u0436\u0435: <code>append<\/code> \u0443\u0434\u0432\u0430\u0438\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u0441\u043b\u0430\u0439\u0441\u044b (\u0434\u043e 256 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432), \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044c. \u0421\u0442\u0435\u043a \u0443\u0434\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430, \u0431\u0435\u0437 \u043f\u043e\u0440\u043e\u0433\u043e\u0432.<\/p>\n<h4>\u0412\u043e\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435: \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e<\/h4>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c \u043f\u0435\u0440\u0435\u0435\u0437\u0434, \u0438 \u0437\u0434\u0435\u0441\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438. \u0421\u0442\u0435\u043a \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432 \u0434\u0440\u0443\u0433\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u043f\u0430\u043c\u044f\u0442\u0438. \u0412 \u0441\u0442\u0435\u043a\u0435 \u043b\u0435\u0436\u0430\u043b\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>x<\/code>, \u0430 \u0433\u0434\u0435-\u0442\u043e \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0436\u0438\u0432\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c <code>&amp;x<\/code>. \u041e\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0439 \u0430\u0434\u0440\u0435\u0441, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0442. \u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0435 \u043f\u0430\u0434\u0430\u0435\u0442?<\/p>\n<p>\u041e\u0442\u0432\u0435\u0442: \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0447\u0438\u043d\u0438\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438. \u0420\u0443\u043a\u0430\u043c\u0438. \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>copystack<\/code> (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/stack.go#L929\" rel=\"noopener noreferrer nofollow\"><code>stack.go:929<\/code><\/a>) \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0434\u043d\u0438\u043c <code>memmove<\/code>, \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0434\u0435\u043b\u044c\u0442\u0443 \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0430\u0440\u044b\u043c \u0438 \u043d\u043e\u0432\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u0430 \u043f\u043e\u0442\u043e\u043c \u043e\u0431\u0445\u043e\u0434\u0438\u0442 \u0441\u0442\u0435\u043a \u043a\u0430\u0434\u0440 \u0437\u0430 \u043a\u0430\u0434\u0440\u043e\u043c \u0438 \u043f\u0440\u0430\u0432\u0438\u0442 \u0432\u0441\u0435, \u0447\u0442\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u043e \u0432\u043d\u0443\u0442\u0440\u044c \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/stack.go#L608-L610\" rel=\"noopener noreferrer nofollow\"><code>stack.go:608<\/code><\/a>):<\/p>\n<blockquote>\n<p>adjustpointer checks whether <em>vpp is in the old stack described by adjinfo. If so, it rewrites <\/em>vpp to point into the new stack.<\/p>\n<\/blockquote>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e: \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430. \u041f\u043e\u043f\u0430\u043b\u043e? \u041f\u043b\u044e\u0441 \u0434\u0435\u043b\u044c\u0442\u0430. \u041f\u0440\u0430\u0432\u044f\u0442\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u0430\u0434\u0440\u043e\u0432, \u0446\u0435\u043f\u043e\u0447\u043a\u0438 defer \u0438 panic, \u0437\u0430\u043f\u0438\u0441\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0447\u0438\u0441\u043b\u0438\u0442\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044f\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432.<\/p>\n<p>\u041f\u043e\u0442\u0440\u043e\u0433\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0435\u0437\u0434 \u0440\u0443\u043a\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043c\u043e <a href=\"https:\/\/github.com\/dsbasko\/sandbox-gorutines\/tree\/main\/stack_move\" rel=\"noopener noreferrer nofollow\"><code>stack_move<\/code><\/a>. \u041e\u043d\u043e \u0431\u0435\u0440\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u0443\u0432\u043e\u0434\u0438\u0442 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u043d\u0430 20 000 \u043a\u0430\u0434\u0440\u043e\u0432 \u0432\u0433\u043b\u0443\u0431\u044c \u0438 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u0441\u043d\u043e\u0432\u0430. \u0410\u0434\u0440\u0435\u0441\u0430 \u0440\u0430\u0437\u043d\u044b\u0435, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0436\u043d\u0435\u0435.<\/p>\n<p>\u041e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441, \u043e\u0442\u043a\u0443\u0434\u0430 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u0437\u043d\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0441\u043b\u043e\u0432\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438, \u0430 \u043a\u0430\u043a\u0438\u0435 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430. \u041e\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430: \u0442\u043e\u0442 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u0438\u0442\u043e\u0432\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u00ab\u0437\u0434\u0435\u0441\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442\u00bb. \u042d\u0442\u0438 \u043a\u0430\u0440\u0442\u044b \u0438 \u0442\u0430\u043a \u043d\u0443\u0436\u043d\u044b \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0443 \u043c\u0443\u0441\u043e\u0440\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0435\u0437\u0434 \u0441\u0442\u0435\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0438\u0445 \u0434\u0430\u0440\u043e\u043c.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/696\/3a6\/0d2\/6963a60d266f3a1c120f1d8b43502bd2.png\" alt=\"\u041f\u0435\u0440\u0435\u0435\u0437\u0434 \u0441\u0442\u0435\u043a\u0430: \u043a\u043e\u043f\u0438\u044f \u043f\u043b\u044e\u0441 \u043f\u043e\u0447\u0438\u043d\u043a\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439\" width=\"1170\" height=\"686\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/696\/3a6\/0d2\/6963a60d266f3a1c120f1d8b43502bd2.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/696\/3a6\/0d2\/6963a60d266f3a1c120f1d8b43502bd2.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0435\u0440\u0435\u0435\u0437\u0434 \u0441\u0442\u0435\u043a\u0430: \u043a\u043e\u043f\u0438\u044f \u043f\u043b\u044e\u0441 \u043f\u043e\u0447\u0438\u043d\u043a\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439<\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0440\u0430\u0441\u0442\u0435\u0442 \u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0433\u0440\u0430\u0431\u043b\u044f \u0441 <code>uintptr<\/code>. \u0414\u043b\u044f \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 <code>uintptr<\/code> \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u0430 \u0447\u0438\u0441\u043b\u043e, \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f <code>unsafe<\/code> \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/unsafe\/unsafe.go#L60-L63\" rel=\"noopener noreferrer nofollow\"><code>unsafe.go:60<\/code><\/a>):<\/p>\n<blockquote>\n<p>Even if a uintptr holds the address of some object, the garbage collector will not update that uintptr\u2019s value if the object moves.<\/p>\n<\/blockquote>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043b \u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0435\u043a\u043e\u0432\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432 <code>uintptr<\/code>, \u0441\u0442\u0435\u043a \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u043b, \u0447\u0438\u0441\u043b\u043e \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0441\u0442\u0430\u0440\u044b\u043c. \u0422\u0435\u043f\u0435\u0440\u044c \u0442\u044b \u0437\u043d\u0430\u0435\u0448\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0437\u0430 \u0442\u0430\u043a\u043e\u0435 \u0431\u044c\u044e\u0442 \u043d\u0430 \u043a\u043e\u0434-\u0440\u0435\u0432\u044c\u044e.<\/p>\n<h4>\u0421\u0442\u0435\u043a \u0443\u043c\u0435\u0435\u0442 \u0438 \u0445\u0443\u0434\u0435\u0442\u044c<\/h4>\n<p>\u0420\u043e\u0441\u0442 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438. \u0415\u0441\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f. \u0413\u043e\u0440\u0443\u0442\u0438\u043d\u0430-\u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0442\u0435\u043b\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u043b\u0430 \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 JSON, \u0441\u0442\u0435\u043a \u0432\u044b\u0440\u043e\u0441 \u0434\u043e \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u0430, \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u044f \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c, \u0438 \u0431\u0435\u0437 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u044d\u0442\u043e\u0442 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0431\u044b \u0437\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u043e\u0439 \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430.<\/p>\n<p>\u0421\u0436\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0435\u043a\u0438 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043c\u0443\u0441\u043e\u0440\u0430, \u0438 \u0432\u044b\u0431\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u043d: GC \u0438 \u0442\u0430\u043a \u043e\u0431\u0445\u043e\u0434\u0438\u0442 \u0441\u0442\u0435\u043a \u043a\u0430\u0436\u0434\u043e\u0439 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0432 \u043f\u043e\u0438\u0441\u043a\u0430\u0445 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439, \u043a\u0430\u0440\u0442\u044b \u0443 \u043d\u0435\u0433\u043e \u0432 \u0440\u0443\u043a\u0430\u0445. \u041f\u0440\u0430\u0432\u0438\u043b\u043e \u043a\u043e\u043d\u0441\u0435\u0440\u0432\u0430\u0442\u0438\u0432\u043d\u043e\u0435: \u0435\u0441\u043b\u0438 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u0442\u0435\u043a\u0430, \u0441\u0442\u0435\u043a \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u0432\u0434\u0432\u043e\u0435 (\u0442\u0435\u043c \u0436\u0435 <code>copystack<\/code>, \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043c\u0435\u043d\u044c\u0448\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443). \u0414\u0435\u043c\u043e <a href=\"https:\/\/github.com\/dsbasko\/sandbox-gorutines\/tree\/main\/stack_shrink\" rel=\"noopener noreferrer nofollow\"><code>stack_shrink<\/code><\/a>: \u0434\u0432\u0435 \u0442\u044b\u0441\u044f\u0447\u0438 \u0433\u043e\u0440\u0443\u0442\u0438\u043d \u0440\u0430\u0437\u0434\u0443\u0432\u0430\u044e\u0442 \u0441\u0442\u0435\u043a\u0438 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0435\u0439 \u0434\u043e 33 \u041a\u0411 \u0438 \u0437\u0430\u0441\u044b\u043f\u0430\u044e\u0442 \u043d\u0430 \u043c\u0435\u043b\u043a\u043e\u0439 \u0433\u043b\u0443\u0431\u0438\u043d\u0435.<\/p>\n<pre><code>\u0433\u043b\u0443\u0431\u0438\u043d\u0430 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430, \u0441\u0442\u0435\u043a \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0439: 33685 \u0431\u0430\u0439\u0442 \u043d\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443\u043f\u043e\u0441\u043b\u0435 1-\u0433\u043e GC:  17137 \u0431\u0430\u0439\u0442 \u043d\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443\u043f\u043e\u0441\u043b\u0435 2-\u0433\u043e GC:  9322 \u0431\u0430\u0439\u0442 \u043d\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443\u043f\u043e\u0441\u043b\u0435 4-\u0433\u043e GC:  5275 \u0431\u0430\u0439\u0442 \u043d\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0446\u0438\u043a\u043b GC \u0441\u0440\u0435\u0437\u0430\u0435\u0442 \u043b\u0438\u0448\u043d\u0435\u0435 \u0432\u0434\u0432\u043e\u0435, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0443\u043f\u0440\u0435\u0442\u0441\u044f \u0432 \u043c\u0438\u043d\u0438\u043c\u0443\u043c. \u0410 \u0441 \u0444\u043b\u0430\u0433\u043e\u043c <code>GODEBUG=gcshrinkstackoff=1<\/code> \u0442\u0430 \u0436\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0442\u0430\u043a \u0438 \u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0432\u043e\u0438 33 \u041a\u0411 \u043d\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0436\u0438\u0437\u043d\u0438.<\/p>\n<h4>\u041f\u043e\u0442\u043e\u043b\u043e\u043a: \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0432\u0438\u0434\u0435\u043b<\/h4>\n<p>\u0420\u0430\u0441\u0442\u0438 \u0432\u0435\u0447\u043d\u043e \u0441\u0442\u0435\u043a \u043d\u0435 \u043c\u043e\u0436\u0435\u0442. \u041b\u0438\u043c\u0438\u0442 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0438 \u0432 \u0435\u0433\u043e \u0432\u044b\u0431\u043e\u0440\u0435 \u0435\u0441\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u044c, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u043b\u044e\u0431\u043b\u044e \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 Go (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/proc.go#L160-L165\" rel=\"noopener noreferrer nofollow\"><code>proc.go:160<\/code><\/a>):<\/p>\n<pre><code class=\"go\">\/\/ src\/runtime\/proc.go:160 (Go 1.27), runtime.main\/\/ Max stack size is 1 GB on 64-bit, 250 MB on 32-bit.\/\/ Using decimal instead of binary GB and MB because\/\/ they look nicer in the stack overflow failure message.if goarch.PtrSize == 8 {maxstacksize = 1000000000}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041b\u0438\u043c\u0438\u0442 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u044b\u0439, \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434 \u0431\u0430\u0439\u0442, \u0430 \u043d\u0435 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u00ab\u0442\u0430\u043a \u043a\u0440\u0430\u0441\u0438\u0432\u0435\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435\u00bb. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435. \u0414\u0435\u043c\u043e <a href=\"https:\/\/github.com\/dsbasko\/sandbox-gorutines\/tree\/main\/stack_overflow\" rel=\"noopener noreferrer nofollow\"><code>stack_overflow<\/code><\/a>: \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u044f \u0431\u0435\u0437 \u0434\u043d\u0430, \u0430 \u0432 main \u0441\u0442\u043e\u0438\u0442 <code>defer<\/code> \u0441 <code>recover()<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u043a\u043e\u0431\u044b \u0432\u0441\u0435 \u043f\u043e\u0439\u043c\u0430\u0435\u0442:<\/p>\n<pre><code class=\"go\">\/\/ stack_overflow\/main.go (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442)func down(n int) int {return down(n+1) + n \/\/ \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u044f \u0431\u0435\u0437 \u0434\u043d\u0430}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<pre><code>runtime: goroutine stack exceeds 1000000000-byte limitruntime: sp=0x1e430ee60398 stack=[0x1e430ee60000, 0x1e432ee60000]fatal error: stack overflowruntime stack:runtime.throw({0x49b82a?, 0x200000001?})...<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u0441\u0435\u0433\u043e \u0432\u044b\u0432\u043e\u0434 \u0437\u0430\u043d\u044f\u043b 278 \u0441\u0442\u0440\u043e\u043a, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0436\u0435\u043c\u0447\u0443\u0436\u0438\u043d\u0443 <code>...44739039 frames elided...<\/code>: \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0447\u0435\u0441\u0442\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0438\u043b, \u0447\u0442\u043e \u0441\u0432\u0435\u0440\u043d\u0443\u043b 44 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u043a\u0430\u0434\u0440\u043e\u0432 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438. \u041e\u0431\u0440\u0430\u0442\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0440\u0438 \u0432\u0435\u0449\u0438. \u041f\u0435\u0440\u0432\u0430\u044f: \u044d\u0442\u043e <code>fatal error<\/code>, \u0430 \u043d\u0435 <code>panic<\/code>, \u0438 \u043c\u043e\u0439 <code>recover()<\/code> \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0441\u044f, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0443\u043c\u0435\u0440\u043b\u0430 \u0441\u0440\u0430\u0437\u0443. \u0412\u0442\u043e\u0440\u0430\u044f: \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0432\u0438\u0434\u043d\u044b <code>runtime.morestack<\/code> \u0438 <code>runtime.newstack<\/code>, \u0442\u0435 \u0441\u0430\u043c\u044b\u0435 \u0433\u0435\u0440\u043e\u0438 \u044d\u0442\u043e\u0439 \u0433\u043b\u0430\u0432\u044b, \u043f\u043e\u0439\u043c\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>\u0422\u0440\u0435\u0442\u044c\u044f, \u0441\u0430\u043c\u0430\u044f \u0442\u043e\u043d\u043a\u0430\u044f: \u0441\u0442\u0435\u043a \u0432 \u0434\u0430\u043c\u043f\u0435 (<code>stack=[...]<\/code>) \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 512 \u041c\u0411, \u0430 \u043d\u0435 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442. \u0414\u043e \u043b\u0438\u043c\u0438\u0442\u0430 \u0441\u0442\u0435\u043a \u043d\u0435 \u0434\u043e\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u043d\u0438\u043a\u043e\u0433\u0434\u0430: \u0443\u043c\u0438\u0440\u0430\u0435\u0442 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0443\u0434\u0432\u043e\u0438\u0442\u044c 512 \u041c\u0411, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e 1 073 741 824 \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u0430.<\/p>\n<h4>1.4 \u0438 1.5: \u0436\u0430\u0442\u0432\u0430<\/h4>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0441\u0442\u0435\u043a\u0438 \u043e\u0442\u043a\u0440\u044b\u043b\u0438 \u0434\u043e\u0440\u043e\u0433\u0443 \u0432\u043d\u0438\u0437. \u0420\u0430\u0437 \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u0440\u0438\u0433\u043e\u0432\u043e\u0440 (\u043d\u0435 \u0443\u0433\u0430\u0434\u0430\u043b\u0438, \u0441\u0442\u0435\u043a \u043f\u0435\u0440\u0435\u0435\u0434\u0435\u0442), \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439. \u0412 Go 1.4 \u041a\u0438\u0442 \u0420\u044d\u043d\u0434\u0430\u043b\u043b \u043e\u043f\u0443\u0441\u0442\u0438\u043b \u0435\u0433\u043e \u0441 8 \u041a\u0411 \u0434\u043e 2 \u041a\u0411, \u0438 \u0432 \u043a\u043e\u043c\u043c\u0438\u0442\u0435 \u0435\u0441\u0442\u044c \u0437\u0430\u043c\u0435\u0440: 100 000 \u0433\u043e\u0440\u0443\u0442\u0438\u043d \u043d\u0430 linux\/amd64 \u043f\u043e\u0434\u0435\u0448\u0435\u0432\u0435\u043b\u0438 \u0441 819 \u041c\u0411 \u0434\u043e 245 \u041c\u0411. \u0421 \u0442\u0435\u0445 \u043f\u043e\u0440 <code>stackMin = 2048<\/code> (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/stack.go#L78\" rel=\"noopener noreferrer nofollow\"><code>stack.go:78<\/code><\/a>) \u043d\u0435 \u043c\u0435\u043d\u044f\u043b\u0441\u044f \u043d\u0438 \u0440\u0430\u0437\u0443, \u043e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c \u043b\u0435\u0442. \u041e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u00ab\u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0441\u0442\u043e\u0438\u0442 \u043f\u0430\u0440\u0443 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442\u00bb \u0441\u0442\u0430\u043b\u043e \u043f\u0440\u0430\u0432\u0434\u043e\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0434\u0435\u0441\u044c, \u0432 \u043a\u043e\u043d\u0446\u0435 2014 \u0433\u043e\u0434\u0430, \u043f\u043e\u0441\u043b\u0435 \u043f\u044f\u0442\u0438 \u043b\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>\u041c\u0435\u043b\u043a\u0430\u044f \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0430 \u0434\u043b\u044f \u0434\u043e\u0442\u043e\u0448\u043d\u044b\u0445: \u0441 Go 1.19 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0435\u0449\u0435 \u0443\u043c\u043d\u0435\u0435. \u041e\u043d \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0435\u043a\u043e\u0432 \u043f\u043e \u0436\u0438\u0432\u044b\u043c \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430\u043c \u0438 \u0432\u044b\u0434\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430\u043c \u0441\u0442\u0435\u043a \u044d\u0442\u043e\u0433\u043e \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0433\u043e\u043d\u044f\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u044b. \u0421\u043e\u0432\u0441\u0435\u043c \u043d\u043e\u0432\u044b\u0435 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0440\u043e\u0432\u043d\u043e 2 \u041a\u0411.<\/p>\n<p>Go 1.5 \u0432 \u0430\u0432\u0433\u0443\u0441\u0442\u0435 2015 \u0433\u043e\u0434\u0430 \u0434\u043e\u0436\u0430\u043b \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435. GOMAXPROCS \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0442\u0430\u043b \u0440\u0430\u0432\u0435\u043d \u0447\u0438\u0441\u043b\u0443 \u044f\u0434\u0435\u0440 (\u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u0447\u043a\u0430 \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0437\u0430\u0439\u043d-\u0434\u043e\u043a <code>go15gomaxprocs<\/code>, \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u044e\u0449\u0438\u0439, \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e): \u044d\u043f\u043e\u0445\u0430 \u00abGo \u043e\u0434\u043d\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u0439, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0448\u044c\u00bb \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c. \u0420\u0430\u043d\u0442\u0430\u0439\u043c \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u043b \u0441 C \u043d\u0430 Go \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e: \u043d\u043e\u043b\u044c \u0444\u0430\u0439\u043b\u043e\u0432 <code>.c<\/code> \u043f\u0440\u043e\u0442\u0438\u0432 66 \u0432 Go 1.0. \u0418 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0441\u043b\u043e\u0442 <code>runnext<\/code> \u0441 \u043b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0432 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435 BenchmarkPingPongHog: \u043c\u0438\u043d\u0443\u0441 99.88%. \u0427\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u0441\u043b\u043e\u0442 \u0438 \u043e\u0442\u043a\u0443\u0434\u0430 \u0442\u0430\u043a\u0430\u044f \u0446\u0438\u0444\u0440\u0430, \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0432 \u0433\u043b\u0430\u0432\u0435 \u043f\u0440\u043e \u043a\u0430\u043d\u0430\u043b\u044b, \u0443 \u043d\u0435\u0435 \u043f\u0440\u044f\u043c\u0430\u044f \u0441\u0432\u044f\u0437\u044c \u0441 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430\u043c\u0438.<\/p>\n<p>\u0413\u043e\u0434\u044b \u0441 1.6 \u043f\u043e 1.13 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u043e\u043b\u0435\u0442\u0430\u044e\u0442 \u043e\u0434\u043d\u0438\u043c \u0430\u0431\u0437\u0430\u0446\u0435\u043c: \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c, \u0448\u0435\u043b \u0442\u044e\u043d\u0438\u043d\u0433 \u0442\u0430\u0439\u043c\u0435\u0440\u043e\u0432, \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u0430\u0443\u0437 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430. \u0410 \u0432\u043e\u0442 \u0432 \u0444\u0435\u0432\u0440\u0430\u043b\u0435 2020 \u0433\u043e\u0434\u0430 \u0441\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0440\u0435\u043b\u0438\u0437, \u0437\u0430\u043a\u0440\u044b\u0432\u0448\u0438\u0439 \u0448\u0435\u0441\u0442\u0438\u043b\u0435\u0442\u043d\u0438\u0439 \u0434\u043e\u043b\u0433.<\/p>\n<h3>Go 1.14: \u0441\u0438\u0433\u043d\u0430\u043b \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u0435\u0436\u043b\u0438\u0432\u043e\u0439 \u043f\u0440\u043e\u0441\u044c\u0431\u044b<\/h3>\n<p>\u0412\u0441\u043f\u043e\u043c\u043d\u0438 \u0434\u044b\u0440\u0443 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438: \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0441\u0442\u0435\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043c, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0426\u0438\u043a\u043b <code>for { i++ }<\/code> \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e, \u0444\u043b\u0430\u0433 \u0432 <code>stackguard0<\/code> \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0447\u0438\u0442\u0430\u0435\u0442, \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u043d\u0435\u0443\u0431\u0438\u0432\u0430\u0435\u043c\u0430. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u043e\u0447\u0438\u043d\u0438\u043b\u0438, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0434\u043e \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0442\u0435\u043c, \u043a\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u00ab\u043f\u043e\u0440\u0430 \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u0442\u044c\u00bb.<\/p>\n<h4>sysmon: \u043d\u0430\u0434\u0437\u0438\u0440\u0430\u0442\u0435\u043b\u044c \u0431\u0435\u0437 \u043f\u0440\u0430\u0432\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/h4>\n<p>\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a Go \u043d\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438 \u043d\u0435 \u0444\u043e\u043d\u043e\u0432\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u042d\u0442\u043e \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u043e\u0442\u043e\u043a \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043c\u0435\u0436\u0434\u0443 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430\u043c\u0438: \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c, \u043f\u043e\u0442\u043e\u043a \u0437\u0430\u0448\u0435\u043b \u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a, \u0432\u0437\u044f\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e. \u0423 \u0442\u0430\u043a\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u0435\u0441\u0442\u044c \u0441\u043b\u0435\u043f\u043e\u0435 \u043f\u044f\u0442\u043d\u043e: \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043e\u0442\u0434\u0430\u0435\u0442 \u043f\u043e\u0442\u043e\u043a \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0443, \u043d\u0435 \u0434\u0430\u0435\u0442 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0443 \u043d\u0438 \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u0448\u0430\u043d\u0441\u0430 \u0432\u043c\u0435\u0448\u0430\u0442\u044c\u0441\u044f. \u0417\u043d\u0430\u0447\u0438\u0442, \u043d\u0443\u0436\u0435\u043d \u043a\u0442\u043e-\u0442\u043e \u0441\u043d\u0430\u0440\u0443\u0436\u0438.<\/p>\n<p>\u042d\u0442\u043e\u0442 \u043a\u0442\u043e-\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f sysmon, \u0438 \u044f \u043e\u0431\u0435\u0449\u0430\u043b \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0438\u043c\u044f \u0435\u0449\u0435 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438: \u043e\u043d \u0440\u043e\u0434\u0438\u043b\u0441\u044f \u0432 \u0442\u043e\u043c \u0436\u0435 Go 1.1, \u0447\u0442\u043e \u0438 GMP. \u042d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u041e\u0421, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0438 \u043e\u043d \u0436\u0438\u0432\u0435\u0442 \u0432\u043d\u0435 \u043f\u0440\u0430\u0432\u0438\u043b GMP: \u0443 \u043d\u0435\u0433\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0442 P, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043e\u0434 \u043e\u043d \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435. \u0415\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430: \u0441\u043f\u0430\u0442\u044c \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c. \u0421\u043e\u043d \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0439, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 20 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434, \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0443\u0434\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043e \u043f\u043e\u0442\u043e\u043b\u043a\u0430 \u0432 10 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434, \u0430 \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0447\u0435\u0433\u043e \u0434\u0435\u043b\u0430\u0442\u044c, sysmon \u0437\u0430\u0441\u044b\u043f\u0430\u0435\u0442 \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0438 \u043d\u0435 \u0436\u0436\u0435\u0442 \u0431\u0430\u0442\u0430\u0440\u0435\u0439\u043a\u0443. \u0417\u0430 \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0445\u043e\u0434 \u043e\u043d \u0443\u0441\u043f\u0435\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e\u0435: \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0441\u0435\u0442\u044c, \u0431\u0443\u0434\u0438\u0442 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 \u043c\u0443\u0441\u043e\u0440\u0430 (\u0440\u0430\u0437 \u0432 \u0434\u0432\u0435 \u043c\u0438\u043d\u0443\u0442\u044b, \u0435\u0441\u043b\u0438 \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u043b\u0430\u0441\u044c), \u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0437\u043e\u0432\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>retake()<\/code>.<\/p>\n<p><code>retake()<\/code> \u043e\u0431\u0445\u043e\u0434\u0438\u0442 \u0432\u0441\u0435 P \u0438 \u0438\u0449\u0435\u0442 \u0434\u0432\u0430 \u0432\u0438\u0434\u0430 \u043d\u0435\u043f\u043e\u0440\u044f\u0434\u043a\u0430. \u041f\u0435\u0440\u0432\u044b\u0439: P \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u0434\u043e\u043b\u044c\u0448\u0435 \u043a\u0432\u0430\u043d\u0442\u0430. \u041a\u0432\u0430\u043d\u0442 \u0437\u0430\u0434\u0430\u043d \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043e\u0439 (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/proc.go#L6677-L6679\" rel=\"noopener noreferrer nofollow\"><code>proc.go:6677<\/code><\/a>):<\/p>\n<pre><code class=\"go\">\/\/ src\/runtime\/proc.go:6677 (Go 1.27)\/\/ forcePreemptNS is the time slice given to a G before it is\/\/ preempted.const forcePreemptNS = 10 * 1000 * 1000 \/\/ 10ms<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u0435\u0441\u044f\u0442\u044c \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c \u0441 Go 1.2. \u0417\u0430\u043c\u0435\u0442\u044c: \u00ab10 \u043c\u0441\u00bb \u0442\u0443\u0442 \u043d\u0435 \u0442\u043e\u0447\u043d\u044b\u0439 \u043a\u0432\u0430\u043d\u0442, \u0430 \u043d\u0438\u0436\u043d\u044f\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430. \u0421\u0430\u043c sysmon \u0441\u043f\u0438\u0442 \u0434\u043e 10 \u043c\u0441 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u043c\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043e \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u0432\u0430\u0435\u0442 \u043e\u0442 10 \u0434\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 20 \u043c\u0441.<\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0432\u0438\u0434 \u043d\u0435\u043f\u043e\u0440\u044f\u0434\u043a\u0430: P \u0437\u0430\u0432\u0438\u0441 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u043e\u0442\u043e\u043a\u043e\u043c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435. \u0422\u0443\u0442 \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u0442\u044c \u043d\u0435\u043a\u043e\u0433\u043e: \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043a\u043e\u0434 \u044f\u0434\u0440\u0430 \u041e\u0421, \u0430 \u043d\u0435 Go, \u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u0444\u043b\u0430\u0433\u0438 \u043e\u043d\u0430 \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 sysmon \u043e\u0442\u0431\u0438\u0440\u0430\u0435\u0442 \u043d\u0435 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443, \u0430 P. \u041f\u0440\u0430\u0432\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c Go-\u043a\u043e\u0434 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043f\u043e\u0442\u043e\u043a\u0443, \u0430 \u0437\u0430\u0441\u0442\u0440\u044f\u0432\u0448\u0438\u0439 \u043f\u0443\u0441\u0442\u044c \u0441\u0438\u0434\u0438\u0442 \u0432 \u044f\u0434\u0440\u0435 \u0431\u0435\u0437 \u043f\u0440\u0430\u0432\u0430. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u044d\u0442\u043e\u0442 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0432 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0447\u0430\u0441\u0442\u0438, \u043e\u043d \u0442\u0430\u043c \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0433\u0435\u0440\u043e\u0439.<\/p>\n<p>\u041d\u0430\u0448\u0435\u043b \u043d\u0435\u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0432\u0438\u0434\u0430: \u0437\u043e\u0432\u0438 <code>preemptone()<\/code>. \u0414\u043e Go 1.13 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0441\u044f \u0435\u0435 \u0441\u0438\u043b\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0430 \u0432 \u0437\u0430\u043f\u0438\u0441\u0438 \u0444\u043b\u0430\u0433\u0430 \u0432 <code>stackguard0<\/code> \u0438 \u043d\u0430\u0434\u0435\u0436\u0434\u0435, \u0447\u0442\u043e \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u0412 Go 1.14 \u043a \u043d\u0430\u0434\u0435\u0436\u0434\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043e\u0440\u0443\u0436\u0438\u0435.<\/p>\n<h4>\u0412\u044b\u0441\u0442\u0440\u0435\u043b<\/h4>\n<p>12 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 2019 \u0433\u043e\u0434\u0430 \u041e\u0441\u0442\u0438\u043d \u041a\u043b\u0435\u043c\u0435\u043d\u0442\u0441 \u0437\u0430\u043a\u043e\u043c\u043c\u0438\u0442\u0438\u043b <code>177a36a<\/code>:<\/p>\n<blockquote>\n<p>runtime: implement async scheduler preemption This adds signal-based preemption to preemptone.<\/p>\n<\/blockquote>\n<p>\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435 \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u0433\u043d\u0430\u043b. \u0421\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u043c\u0435\u0435\u0442 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435: \u043f\u043e\u0442\u043e\u043a \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a, \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u0442\u043e\u043a \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0441 \u0442\u043e\u0433\u043e \u0436\u0435 \u043c\u0435\u0441\u0442\u0430. \u041e\u0431\u044b\u0447\u043d\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432\u0440\u043e\u0434\u0435 \u00ab\u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u043e\u0441\u044f\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c\u0441\u044f\u00bb (SIGTERM) \u0438\u043b\u0438 \u00ab\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043d\u043e\u043b\u044c\u00bb (SIGFPE). \u0420\u0430\u043d\u0442\u0430\u0439\u043c Go \u043f\u0440\u0438\u0441\u043f\u043e\u0441\u043e\u0431\u0438\u043b \u0438\u0445 \u043f\u043e\u0434 \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u0435.<\/p>\n<p>\u041c\u0435\u0445\u0430\u043d\u0438\u043a\u0430 \u0432 \u0442\u0440\u0438 \u0445\u043e\u0434\u0430. \u0425\u043e\u0434 \u043f\u0435\u0440\u0432\u044b\u0439: <code>preemptone()<\/code> \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u043e\u0432\u0435\u0442 <code>preemptM()<\/code>, \u0430 \u0442\u043e\u0442 \u0448\u043b\u0435\u0442 \u043f\u043e\u0442\u043e\u043a\u0443, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u0436\u0430\u0434\u043d\u0430\u044f \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430, \u0441\u0438\u0433\u043d\u0430\u043b SIGURG. \u0425\u043e\u0434 \u0432\u0442\u043e\u0440\u043e\u0439: \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u0438\u0433\u043d\u0430\u043b\u0430 (<code>doSigPreempt<\/code>) \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0441\u0442\u043e\u0438\u0442 \u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0442\u043e\u0447\u043a\u0435, \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0442\u0440\u044e\u043a: \u043f\u0440\u0430\u0432\u0438\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0442\u043e\u043a\u0430 \u0442\u0430\u043a, \u0431\u0443\u0434\u0442\u043e \u043f\u0440\u0435\u0440\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441\u0430\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0432\u044b\u0437\u0432\u0430\u043b \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>asyncPreempt<\/code>. \u0428\u0430\u043f\u043a\u0430 <code>preempt.go<\/code> \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u043e \u0434\u043e\u0441\u043b\u043e\u0432\u043d\u043e (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/preempt.go#L41-L43\" rel=\"noopener noreferrer nofollow\"><code>preempt.go:41<\/code><\/a>):<\/p>\n<blockquote>\n<p>it adjusts the signal context to make it look like the signaled thread just called asyncPreempt and resumes the thread. asyncPreempt spills all registers and enters the scheduler.<\/p>\n<\/blockquote>\n<p>\u0425\u043e\u0434 \u0442\u0440\u0435\u0442\u0438\u0439: \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f, \u043f\u043e\u0442\u043e\u043a \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u0435\u0442\u0441\u044f \u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0431\u044f \u0432\u043d\u0443\u0442\u0440\u0438 <code>asyncPreempt<\/code>, \u0432\u044b\u0437\u043e\u0432\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e. \u041e\u043d\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0432\u0441\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0438 \u0443\u0432\u043e\u0434\u0438\u0442 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a. \u0421\u0438\u0433\u043d\u0430\u043b \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u0441\u0430\u043c: \u043e\u043d \u043f\u043e\u0434\u0434\u0435\u043b\u0430\u043b \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0435\u0433\u043e \u043d\u0435 \u0431\u044b\u043b\u043e, \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043a\u043e\u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430.<\/p>\n<p>\u041a\u0440\u0430\u0441\u0438\u0432\u0430\u044f \u0434\u0435\u0442\u0430\u043b\u044c \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0445: \u043f\u0440\u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0434\u0435\u043b\u044f\u0442 \u043f\u043e \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0443, \u0447\u0430\u0441\u0442\u044c \u0431\u0435\u0440\u0435\u0436\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u0434, \u0447\u0430\u0441\u0442\u044c \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f. \u0421\u0438\u0433\u043d\u0430\u043b \u0436\u0435 \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u0435\u0442 \u043f\u043e\u0441\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u0433\u0434\u0435 \u0436\u0438\u0432\u044b\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 <code>asyncPreempt<\/code> \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0435: \u043d\u0430 amd64 \u044d\u0442\u043e BP, \u0444\u043b\u0430\u0433\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 14 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0442\u0435\u043a\u0435 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b (112 \u0431\u0430\u0439\u0442), \u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0443\u0435\u0437\u0436\u0430\u044e\u0442 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u0443\u0444\u0435\u0440 \u043f\u0440\u0438 P. \u0424\u0430\u0439\u043b \u0441 \u044d\u0442\u0438\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u0438\u0448\u0443\u0442 \u0440\u0443\u043a\u0430\u043c\u0438, \u0435\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 <code>mkpreempt.go<\/code> \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d32\/c88\/3af\/d32c883af3f06016528143788ff820ba.png\" alt=\"\u0412\u044b\u0441\u0442\u0440\u0435\u043b SIGURG: \u0441\u0438\u0433\u043d\u0430\u043b \u043f\u043e\u0434\u0434\u0435\u043b\u044b\u0432\u0430\u0435\u0442 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\" width=\"1170\" height=\"672\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d32\/c88\/3af\/d32c883af3f06016528143788ff820ba.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d32\/c88\/3af\/d32c883af3f06016528143788ff820ba.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0412\u044b\u0441\u0442\u0440\u0435\u043b SIGURG: \u0441\u0438\u0433\u043d\u0430\u043b \u043f\u043e\u0434\u0434\u0435\u043b\u044b\u0432\u0430\u0435\u0442 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/figcaption><\/div>\n<\/figure>\n<h4>\u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e SIGURG<\/h4>\n<p>\u0412\u044b\u0431\u043e\u0440 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 &#8212; \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f, \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0432 <code>signal_unix.go<\/code> (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/signal_unix.go#L44-L74\" rel=\"noopener noreferrer nofollow\"><code>signal_unix.go:44<\/code><\/a>) \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0447\u0435\u043a-\u043b\u0438\u0441\u0442 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0421\u0438\u0433\u043d\u0430\u043b \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430\u043c\u0438 \u043d\u0430\u0441\u043a\u0432\u043e\u0437\u044c, \u0438\u043d\u0430\u0447\u0435 \u043a\u0430\u0436\u0434\u043e\u0435 \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0442\u0432\u043e\u0439 \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440. \u041d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 libc. \u0414\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0431\u0435\u0437\u0432\u0440\u0435\u0434\u043d\u044b\u043c \u043f\u0440\u0438 \u043b\u043e\u0436\u043d\u043e\u043c \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0438: SIGALRM \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0442 \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u0435 \u043e\u0442 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u0431\u0443\u0434\u0438\u043b\u044c\u043d\u0438\u043a\u0430. \u0418 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043d\u0430 macOS, \u0447\u0442\u043e \u0432\u044b\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u0435\u0442 realtime-\u0441\u0438\u0433\u043d\u0430\u043b\u044b \u0446\u0435\u043b\u0438\u043a\u043e\u043c. SIGURG \u043f\u0440\u043e\u0448\u0435\u043b \u043f\u043e \u0432\u0441\u0435\u043c \u043f\u0443\u043d\u043a\u0442\u0430\u043c \u043f\u043e \u0437\u0430\u0431\u0430\u0432\u043d\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/signal_unix.go#L67-L73\" rel=\"noopener noreferrer nofollow\"><code>signal_unix.go:67<\/code><\/a>):<\/p>\n<blockquote>\n<p>We use SIGURG because it meets all of these criteria, is extremely unlikely to be used by an application for its \u201creal\u201d meaning (both because out-of-band data is basically unused and\u2026)<\/p>\n<\/blockquote>\n<p>\u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 SIGURG (\u0441\u0440\u043e\u0447\u043d\u044b\u0435, out-of-band \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 TCP) \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0435\u0440\u0442\u0432\u043e, \u0441\u0438\u0433\u043d\u0430\u043b \u0441\u0442\u043e\u044f\u043b \u0431\u0435\u0437 \u0434\u0435\u043b\u0430, \u0435\u0433\u043e \u0438 \u0437\u0430\u0431\u0440\u0430\u043b\u0438. \u041e\u0442\u0441\u044e\u0434\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435: \u0435\u0441\u043b\u0438 \u0442\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0448\u044c Go-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043f\u043e\u0434 <code>strace<\/code> \u0438 \u0443\u0432\u0438\u0434\u0438\u0448\u044c \u043b\u0438\u0432\u0435\u043d\u044c SIGURG, \u044d\u0442\u043e \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0438 \u043d\u0435 \u0430\u0442\u0430\u043a\u0430. \u042d\u0442\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>\u0412\u0442\u043e\u0440\u0430\u044f \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0430 \u0432\u0430\u0436\u043d\u0435\u0435. \u0412\u044b\u0442\u0435\u0441\u043d\u0438\u0442\u044c \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0432 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0447\u043a\u0435, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043c, \u0433\u0434\u0435 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438. \u041d\u0435 \u043f\u043e\u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0434\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430. \u041d\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439. \u041d\u0435 \u0442\u0430\u043c, \u0433\u0434\u0435 \u043d\u0430 \u0441\u0442\u0435\u043a\u0435 \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u0442 \u043c\u0435\u0441\u0442\u0430 \u0434\u043b\u044f \u0432\u043f\u0440\u044b\u0441\u043a\u0430 \u0432\u044b\u0437\u043e\u0432\u0430.<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u0441\u0435 \u044d\u0442\u043e <code>isAsyncSafePoint<\/code> (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/preempt.go#L390\" rel=\"noopener noreferrer nofollow\"><code>preempt.go:390<\/code><\/a>), \u0438 \u0435\u0441\u043b\u0438 \u0442\u043e\u0447\u043a\u0430 \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430, \u0441\u0438\u0433\u043d\u0430\u043b \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432\u043f\u0443\u0441\u0442\u0443\u044e, \u0430 sysmon \u043f\u0440\u0438\u0448\u043b\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043a\u0440\u0443\u0433\u0435. \u0412\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u0435 \u0432 Go \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u00ab\u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f\u00bb, \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043a <code>preemptone<\/code> \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/proc.go#L6908-L6912\" rel=\"noopener noreferrer nofollow\"><code>proc.go:6908<\/code><\/a>): \u00abThis function is purely best-effort\u00bb.<\/p>\n<h4>\u041c\u0430\u0448\u0438\u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/h4>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u0435\u0449\u0430\u043d\u043d\u043e\u0435 \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0434\u0435\u043c\u043e. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 <a href=\"https:\/\/github.com\/dsbasko\/sandbox-gorutines\/tree\/main\/preempt\" rel=\"noopener noreferrer nofollow\"><code>preempt<\/code><\/a>: \u043e\u0434\u043d\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u043a\u0440\u0443\u0442\u0438\u0442 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0432 \u0446\u0438\u043a\u043b\u0435 \u0431\u0435\u0437 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, <code>GOMAXPROCS=1<\/code>, \u0430 main \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443 \u043c\u0443\u0441\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0443\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b:<\/p>\n<pre><code class=\"go\">\/\/ preempt\/main.go (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442)go func() {for {sink.Add(1) \/\/ \u0446\u0438\u043a\u043b \u0431\u0435\u0437 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439}}()time.Sleep(10 * time.Millisecond)runtime.GC()<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u044e \u043d\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c Go:<\/p>\n<pre><code class=\"bash\">go build -o \/tmp\/preempt .\/preempt\/tmp\/preempt<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<pre><code>\u0448\u0430\u0433 1: \u0437\u043e\u0432\u0443 runtime.GC() - \u0435\u043c\u0443 \u043d\u0443\u0436\u0435\u043d STW, \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0442\u0435\u0441\u043d\u0438\u0442\u044c \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443\u0448\u0430\u0433 2: GC \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f \u0437\u0430 80.917236ms (\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0430\u043a\u0440\u0443\u0442\u0438\u043b\u0438: 31428568)\u0448\u0430\u0433 3: \u0432\u0442\u043e\u0440\u0430\u044f \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440: 42<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442: \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u0434\u043e\u0436\u0434\u0430\u043b\u0441\u044f \u0441\u0432\u043e\u0435\u0433\u043e, \u0432\u044b\u0442\u0435\u0441\u043d\u0438\u0432 \u0446\u0438\u043a\u043b \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c. \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"bash\">GODEBUG=asyncpreemptoff=1 \/tmp\/preempt<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<pre><code>(\u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432\u044b\u0432\u043e\u0434\u0430; \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u0438\u0441\u0438\u0442, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u0440\u0438\u0431\u044c\u0435\u0448\u044c Ctrl+C)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u0433\u043e\u0442\u043e\u0432\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 Go 1.13. \u0424\u043b\u0430\u0433 <code>asyncpreemptoff=1<\/code> \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u044b, \u043a\u043e\u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0444\u043b\u0430\u0433 \u0432 <code>stackguard0<\/code> \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0441\u0442\u0430\u0432\u0438\u0442 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443, \u043d\u043e \u0432 \u0446\u0438\u043a\u043b\u0435 \u0431\u0435\u0437 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0435\u0433\u043e \u043d\u0435\u043a\u043e\u043c\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u0438\u0441\u043d\u0435\u0442 \u0434\u0430\u0436\u0435 \u0440\u0430\u043d\u044c\u0448\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e <code>Println<\/code>: \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 P \u0437\u0430\u043d\u044f\u0442 \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430. \u041e\u0434\u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u00ab\u0434\u043e 1.14\u00bb \u0438 \u00ab\u043f\u043e\u0441\u043b\u0435\u00bb \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u0435\u0435 \u043b\u044e\u0431\u044b\u0445 \u0441\u043b\u043e\u0432.<\/p>\n<p>\u0423 \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u044f \u0435\u0441\u0442\u044c \u0438 \u0446\u0435\u043d\u0430, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 release notes 1.14 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e: \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 Unix \u0441\u0442\u0430\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432, \u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u0447\u0430\u0449\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 EINTR. \u041a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u043e\u0432\u0435\u0442 syscall \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u043e\u0431\u044f\u0437\u0430\u043d \u0443\u043c\u0435\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0432\u044b\u0437\u043e\u0432. \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u0430 \u043d\u0430 1.14 \u0442\u0432\u043e\u044f \u043e\u0431\u0435\u0440\u0442\u043a\u0430 \u043d\u0430\u0434 syscall \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043f\u043e\u0440\u0430\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0430\u0434\u0430\u0442\u044c, \u0442\u0435\u043f\u0435\u0440\u044c \u0442\u044b \u0437\u043d\u0430\u0435\u0448\u044c \u0432\u0438\u043d\u043e\u0432\u043d\u0438\u043a\u0430.<\/p>\n<p>\u0418 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0448\u0442\u0440\u0438\u0445: \u0441\u0438\u0433\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u0435 \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u043b\u043e \u043a\u043e\u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0435, \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u043f\u043e \u0441\u0435\u0439 \u0434\u0435\u043d\u044c. \u0424\u043b\u0430\u0433 \u0432 <code>stackguard0<\/code> \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u043c, \u0435\u0441\u043b\u0438 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438; \u0441\u0438\u0433\u043d\u0430\u043b \u0434\u043e\u0433\u043e\u043d\u044f\u0435\u0442 \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442. \u0425\u0430\u043a 2013 \u0433\u043e\u0434\u0430 \u0438 \u043e\u0440\u0443\u0436\u0438\u0435 2020 \u0433\u043e\u0434\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430.<\/p>\n<h3>\u0416\u0438\u0437\u043d\u044c \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b: \u043e\u0442 go f() \u0434\u043e \u043f\u0443\u043b\u0430 \u043c\u0435\u0440\u0442\u0432\u044b\u0445<\/h3>\n<p>\u041c\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u043c, \u043a\u0430\u043a \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u044e\u0442. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0439\u0434\u0435\u043c \u0432\u0435\u0441\u044c \u0435\u0435 \u043f\u0443\u0442\u044c: \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u0435, \u0441\u043e\u043d, \u0441\u043c\u0435\u0440\u0442\u044c \u0438 \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0441\u043c\u0435\u0440\u0442\u0438. \u041f\u043e\u0431\u043e\u0447\u043d\u044b\u043c \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u043c \u043d\u0430\u0443\u0447\u0438\u043c\u0441\u044f \u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043c\u043f \u043f\u0430\u043d\u0438\u043a\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u043e.<\/p>\n<h4>\u0420\u043e\u0436\u0434\u0435\u043d\u0438\u0435: \u0447\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 go f(x)<\/h4>\n<p>\u0412\u043e\u043f\u0440\u043e\u0441, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0433\u043e\u0440\u044f\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043d\u043e\u0432\u0438\u0447\u043a\u0438: \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 <code>go f(x)<\/code> \u0447\u0435\u043c\u0443 \u0440\u0430\u0432\u0435\u043d <code>x<\/code>? \u0422\u043e\u043c\u0443, \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u0438\u043b\u0438 \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f? \u041e\u0442\u0432\u0435\u0442 \u0436\u0435\u0441\u0442\u043a\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u044f\u0437\u044b\u043a\u0430:<\/p>\n<blockquote>\n<p>The function value and parameters are evaluated as usual in the calling goroutine.<\/p>\n<\/blockquote>\n<p>\u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e, \u0432 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0435, \u0434\u043e \u0442\u043e\u0433\u043e \u043a\u0430\u043a <code>go<\/code> \u0432\u0435\u0440\u043d\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e: \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 <code>go f(x, y)<\/code> \u0432 \u00ab\u0432\u044b\u0447\u0438\u0441\u043b\u0438 <code>x1, y1 := x, y<\/code> \u043f\u0440\u044f\u043c\u043e \u0437\u0434\u0435\u0441\u044c, \u043f\u043e\u0442\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b\u0437\u043e\u0432\u0435\u0442 <code>f(x1, y1)<\/code>\u00bb. \u0412 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0443\u0435\u0437\u0436\u0430\u0435\u0442 \u043e\u0434\u0438\u043d-\u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435: \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 \u0442\u0432\u043e\u0440\u0446\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a <code>newproc(fn *funcval)<\/code> (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/proc.go#L5334\" rel=\"noopener noreferrer nofollow\"><code>proc.go:5334<\/code><\/a>). \u0417\u0430\u043f\u043e\u043c\u043d\u0438 \u044d\u0442\u0443 \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0443: \u0432 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043e\u043d\u0430 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442 \u0441\u0430\u043c\u044b\u0439 \u043c\u0430\u0441\u0441\u043e\u0432\u044b\u0439 \u0431\u0430\u0433 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 Go (\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439, \u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0446\u0438\u043a\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0447\u0438\u043d\u0438\u043b\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u044f\u0437\u044b\u043a\u0430 \u0432 1.22).<\/p>\n<p><code>newproc<\/code> \u0431\u0435\u0440\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 <code>g<\/code> (\u0447\u0430\u0449\u0435 \u0438\u0437 \u043f\u0443\u043b\u0430, \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0438\u0436\u0435), \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u0442\u0435\u043a, \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0441\u0442\u0430\u0432\u0438\u0442 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c. \u041f\u0430\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u043c \u0441\u043a\u043e\u0440\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f: <code>goid<\/code> (\u043d\u043e\u043c\u0435\u0440 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b), <code>gopc<\/code> (\u0430\u0434\u0440\u0435\u0441 \u0442\u043e\u0433\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <code>go<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0435 \u043f\u043e\u0440\u043e\u0434\u0438\u043b) \u0438 <code>parentGoid<\/code> (\u043d\u043e\u043c\u0435\u0440 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f).<\/p>\n<p>\u041f\u0440\u043e <code>goid<\/code> \u0435\u0441\u0442\u044c \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0430\u044f \u0434\u0435\u0442\u0430\u043b\u044c. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0434\u0435\u0440\u0433\u0430\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 <code>go f()<\/code>, \u043a\u0430\u0436\u0434\u044b\u0439 P \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u043d\u043e\u043c\u0435\u0440\u0430 \u043f\u0430\u0447\u043a\u0430\u043c\u0438 \u043f\u043e 16 \u0448\u0442\u0443\u043a \u0438 \u0440\u0430\u0437\u0434\u0430\u0435\u0442 \u0438\u0437 \u0441\u0432\u043e\u0435\u0439 \u043f\u0430\u0447\u043a\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u043e\u043c\u0435\u0440\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d \u043d\u0435 \u0438\u0434\u0443\u0442 \u043f\u043e\u0434\u0440\u044f\u0434: \u0434\u0432\u0435 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u0440\u0443\u0433 \u0437\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 P, \u043f\u043e\u043b\u0443\u0447\u0430\u0442 \u043d\u043e\u043c\u0435\u0440\u0430, \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u0438. \u0421\u0435\u0439\u0447\u0430\u0441 \u0443\u0432\u0438\u0434\u0438\u0448\u044c, \u0432\u043e \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u044b\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u0430\u043c\u043f\u0435.<\/p>\n<h4>\u0414\u0430\u043c\u043f \u043f\u0430\u043d\u0438\u043a\u0438, \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u043e<\/h4>\n<p>\u0414\u0435\u043c\u043e <a href=\"https:\/\/github.com\/dsbasko\/sandbox-gorutines\/tree\/main\/panic_dump\" rel=\"noopener noreferrer nofollow\"><code>panic_dump<\/code><\/a>: \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0438\u0441\u043d\u0435\u0442 \u043d\u0430 \u043a\u0430\u043d\u0430\u043b\u0435, \u0436\u0434\u0435\u043c \u0438 \u0440\u043e\u043d\u044f\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443:<\/p>\n<pre><code class=\"go\">\/\/ panic_dump\/main.go (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442)func waiter(ch chan int) {&lt;-ch \/\/ \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0440\u0430\u0437\u0431\u0443\u0434\u0438\u0442}func main() {ch := make(chan int)go waiter(ch)time.Sleep(100 * time.Millisecond)panic(\"\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0434\u0430\u043c\u043f\")}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<pre><code class=\"bash\">go build -o \/tmp\/panic_dump .\/panic_dumpGOTRACEBACK=all \/tmp\/panic_dump<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<pre><code>panic: \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0434\u0430\u043c\u043fgoroutine 1 [running]:main.main()\/...\/panic_dump\/main.go:15 +0x85goroutine 6 [chan receive]:main.waiter(...)\/...\/panic_dump\/main.go:8created by main.main in goroutine 1\/...\/panic_dump\/main.go:13 +0x66<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e \u0444\u043b\u0430\u0433\u0435: \u0431\u0435\u0437 <code>GOTRACEBACK=all<\/code> \u0442\u044b \u0443\u0432\u0438\u0434\u0435\u043b \u0431\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043f\u0430\u0432\u0448\u0443\u044e \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443, \u0441\u043f\u044f\u0449\u0438\u0435 \u0432 \u0434\u0430\u043c\u043f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442. \u041f\u043e\u043b\u0435\u0437\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u0431\u043e\u0440. <code>goroutine 1<\/code>: \u044d\u0442\u043e main, \u0438 \u043e\u043d\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u043e\u043c\u0435\u0440 \u043e\u0434\u0438\u043d, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043d\u0443\u043b\u044f. <code>goroutine 6<\/code>: \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043e\u0434\u0438\u043d-\u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <code>go<\/code>, \u0430 \u043d\u043e\u043c\u0435\u0440 \u0448\u0435\u0441\u0442\u043e\u0439, \u043c\u043b\u0430\u0434\u0448\u0438\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430. \u041f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0442\u0438 \u043d\u043e\u043c\u0435\u0440\u0430 \u043d\u0435\u043b\u044c\u0437\u044f \u043d\u0438 \u0441\u0435\u043a\u0443\u043d\u0434\u044b: \u0442\u0430 \u0436\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0442 \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u043a \u043f\u0440\u043e\u0433\u043e\u043d\u0443 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u0440\u0430\u0437\u043d\u044b\u0435, \u0430 \u0440\u0430\u0437\u0434\u0430\u0447\u0430 \u043f\u0430\u0447\u043a\u0430\u043c\u0438 \u043f\u043e 16 \u0440\u0430\u0437\u0433\u043e\u043d\u044f\u0435\u0442 \u0440\u0430\u0437\u0431\u0440\u043e\u0441 \u0442\u0435\u043c \u0441\u0438\u043b\u044c\u043d\u0435\u0435, \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432 \u043c\u0430\u0448\u0438\u043d\u0435 \u044f\u0434\u0435\u0440. <code>[running]<\/code> \u0438 <code>[chan receive]<\/code> \u0432 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043a\u0430\u0445: \u0441\u0442\u0430\u0442\u0443\u0441.<\/p>\n<p>\u0418 \u0441\u0442\u0440\u043e\u043a\u0430 <code>created by main.main in goroutine 1<\/code> \u0441 \u0442\u043e\u0447\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c \u0438 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0441\u0442\u0440\u043e\u043a\u0438: \u044d\u0442\u043e \u0442\u0435 \u0441\u0430\u043c\u044b\u0435 <code>gopc<\/code> \u0438 <code>parentGoid<\/code> \u0438\u0437 \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u0430. \u041a \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043c\u043e\u0433 \u0441\u0442\u043e \u0440\u0430\u0437 \u0443\u0439\u0442\u0438 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u0434 \u0438\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0443\u043c\u0435\u0440\u0435\u0442\u044c, \u043d\u043e \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b \u0430\u0434\u0440\u0435\u0441 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <code>go<\/code> \u043f\u0440\u0438 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u0438, \u0438 \u0434\u0430\u043c\u043f \u0432\u0435\u0434\u0435\u0442 \u0442\u0435\u0431\u044f \u0440\u043e\u0432\u043d\u043e \u043a \u043d\u0435\u043c\u0443.<\/p>\n<p>\u0421\u043e \u0441\u0442\u0430\u0442\u0443\u0441\u0430\u043c\u0438 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u043c, \u043e\u043d \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439. \u0412 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 \u0438\u0445 \u0434\u0432\u0435\u043d\u0430\u0434\u0446\u0430\u0442\u044c (\u0441\u0447\u0438\u0442\u0430\u044f \u0434\u0432\u0435 \u043c\u0435\u0440\u0442\u0432\u044b\u0435 \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438, <a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/runtime2.go#L37-L95\" rel=\"noopener noreferrer nofollow\"><code>runtime2.go:37<\/code><\/a>), \u043d\u043e\u0432\u0438\u0447\u043a\u0443 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0448\u0435\u0441\u0442\u0438:<\/p>\n<ul>\n<li>\n<p><code>_Grunnable<\/code>: \u0441\u0442\u043e\u0438\u0442 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u0436\u0434\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430<\/p>\n<\/li>\n<li>\n<p><code>_Grunning<\/code>: \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441<\/p>\n<\/li>\n<li>\n<p><code>_Gsyscall<\/code>: \u0443\u0448\u043b\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432<\/p>\n<\/li>\n<li>\n<p><code>_Gwaiting<\/code>: \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0430 (\u043a\u0430\u043d\u0430\u043b, \u043c\u044c\u044e\u0442\u0435\u043a\u0441, \u0441\u043e\u043d)<\/p>\n<\/li>\n<li>\n<p><code>_Gdead<\/code>: \u0443\u043c\u0435\u0440\u043b\u0430 \u0438\u043b\u0438 \u0435\u0449\u0435 \u043d\u0435 \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c<\/p>\n<\/li>\n<li>\n<p><code>_Gcopystack<\/code>: \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0435\u0442 \u0435\u0435 \u0441\u0442\u0435\u043a, \u043c\u044b \u0432\u0438\u0434\u0435\u043b\u0438 \u044d\u0442\u043e \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0433\u043b\u0430\u0432\u0435<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u0434\u0430\u043c\u043f\u0430\u0445 \u0432\u043c\u0435\u0441\u0442\u043e <code>waiting<\/code> \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f: <code>[chan receive]<\/code>, <code>[select]<\/code>, <code>[sync.Mutex.Lock]<\/code>, <code>[sleep]<\/code>, <code>[IO wait]<\/code>. \u041f\u0440\u0438\u0447\u0438\u043d \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 \u043e\u043a\u043e\u043b\u043e \u043f\u043e\u043b\u0443\u0441\u043e\u0442\u043d\u0438, \u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0432 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u0441\u044b\u043f\u0430\u043d\u0438\u044f. \u041f\u043e\u0432\u0438\u0441\u0438 \u043d\u0430\u0448 <code>waiter<\/code> \u0434\u043e\u043b\u044c\u0448\u0435 \u043c\u0438\u043d\u0443\u0442\u044b, \u0441\u043a\u043e\u0431\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438 \u0431\u044b \u0435\u0449\u0435 \u0438 \u0432\u0440\u0435\u043c\u044f: <code>[chan receive, 3 minutes]<\/code>.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dd1\/d2e\/c47\/dd1d2ec47f6886c8a5b74d5acd53a295.png\" alt=\"\u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442: \u0448\u0435\u0441\u0442\u044c \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u0432 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b\" width=\"1170\" height=\"672\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/dd1\/d2e\/c47\/dd1d2ec47f6886c8a5b74d5acd53a295.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dd1\/d2e\/c47\/dd1d2ec47f6886c8a5b74d5acd53a295.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442: \u0448\u0435\u0441\u0442\u044c \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u0432 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b<\/figcaption><\/div>\n<\/figure>\n<h4>\u0421\u043e\u043d: \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u0442\u043e\u043a \u043d\u0435 \u0437\u0430\u0441\u044b\u043f\u0430\u0435\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u043e\u0439<\/h4>\n<p>\u0427\u0442\u043e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 <code>waiter<\/code> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 <code>&lt;-ch<\/code> \u043d\u0430 \u043f\u0443\u0441\u0442\u043e\u043c \u043a\u0430\u043d\u0430\u043b\u0435? \u041b\u044e\u0431\u0430\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0432 Go (\u043a\u0430\u043d\u0430\u043b, \u043c\u044c\u044e\u0442\u0435\u043a\u0441, <code>time.Sleep<\/code>, <code>select<\/code>) \u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430: <code>gopark<\/code> (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/proc.go#L457\" rel=\"noopener noreferrer nofollow\"><code>proc.go:457<\/code><\/a>). \u041e\u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f, \u0442\u0443 \u0441\u0430\u043c\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043b\u044f \u0434\u0430\u043c\u043f\u0430. \u041f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u0441\u0442\u0435\u043a \u043f\u043e\u0442\u043e\u043a\u0430, \u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u043d\u0430 <code>_Gwaiting<\/code>, \u043e\u0442\u0446\u0435\u043f\u043b\u044f\u0435\u0442 \u0435\u0435 \u043e\u0442 \u043f\u043e\u0442\u043e\u043a\u0430 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0437\u043e\u0432\u0435\u0442 <code>schedule()<\/code>: \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430, \u043f\u043e\u0438\u0441\u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437, \u0432 \u043d\u0435\u043c \u0440\u0430\u0437\u0433\u0430\u0434\u043a\u0430 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u043c\u0430\u0433\u0438\u0438 Go. \u0413\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u00ab\u0443\u0441\u043d\u0443\u043b\u0430\u00bb, \u0430 \u043f\u043e\u0442\u043e\u043a \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0438 \u043d\u0430 \u0442\u0430\u043a\u0442: \u043e\u043d \u0432 \u0442\u0443 \u0436\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043d\u0430\u0447\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0434\u0440\u0443\u0433\u0443\u044e \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443. \u0421\u043f\u044f\u0449\u0430\u044f \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u043d\u0438\u043a\u043e\u043c\u0443 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442: \u044d\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432 \u043a\u0443\u0447\u0435 \u0441\u043e \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u043c <code>waiting<\/code>, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043a\u0430\u043d\u0430\u043b\u0430. \u041d\u0438 \u043f\u043e\u0442\u043e\u043a\u0430, \u043d\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u043d\u0438 \u043e\u043f\u0440\u043e\u0441\u0430 \u0432 \u0446\u0438\u043a\u043b\u0435. \u0412\u043e\u0442 \u043f\u043e\u0447\u0435\u043c\u0443 \u0441\u0442\u043e \u0442\u044b\u0441\u044f\u0447 \u0433\u043e\u0440\u0443\u0442\u0438\u043d, \u0436\u0434\u0443\u0449\u0438\u0445 \u043a\u0430\u043d\u0430\u043b\u044b, \u043e\u0431\u043e\u0448\u043b\u0438\u0441\u044c \u043d\u0430\u043c \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u041e\u0421.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0436\u0435 \u043f\u043e\u0440\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043f\u0440\u044f\u0442\u0430\u043b\u0441\u044f \u0437\u0430 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u00ab\u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u0441\u0442\u0435\u043a \u043f\u043e\u0442\u043e\u043a\u0430\u00bb. \u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 M \u0435\u0441\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043e\u0441\u043e\u0431\u0430\u044f \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 <code>g0<\/code>, \u043d\u0430 Linux \u0441\u043e \u0441\u0442\u0435\u043a\u043e\u043c \u0432 16 \u041a\u0411 (\u043d\u0430 macOS \u0438 Windows \u043e\u043d\u0430 \u0441\u0430\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0441\u0442\u0435\u043a \u043f\u043e\u0442\u043e\u043a\u0430). \u041e\u043d\u0430 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043e\u0434: \u043d\u0430 \u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0430\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a.<\/p>\n<p>\u0417\u0430\u0447\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0435\u043a? \u0421\u0442\u0435\u043a \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b 2 \u041a\u0411 \u0438 \u0443\u043c\u0435\u0435\u0442 \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0442\u044c, \u0430 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0430\u043c \u0434\u0432\u0438\u0433\u0430\u0435\u0442 \u0447\u0443\u0436\u0438\u0435 \u0441\u0442\u0435\u043a\u0438, \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0440\u0438\u0441\u043a\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u043e\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u044e\u0431\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043d\u0430\u0434 \u0441\u0443\u0434\u044c\u0431\u043e\u0439 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b (\u043f\u0430\u0440\u043a\u043e\u0432\u043a\u0430, \u043f\u0440\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u0435, \u0440\u043e\u0441\u0442 \u0441\u0442\u0435\u043a\u0430, \u0441\u043c\u0435\u0440\u0442\u044c) \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u0440\u044b\u0436\u043a\u0430 \u043d\u0430 <code>g0<\/code>. \u041a\u043e\u0433\u0434\u0430 \u0432 \u0442\u0440\u0435\u0439\u0441\u0431\u0435\u043a\u0435 \u0432\u0438\u0434\u0438\u0448\u044c <code>runtime.mcall<\/code> \u0438\u043b\u0438 <code>runtime.systemstack<\/code>, \u044d\u0442\u043e \u043e\u043d \u0438 \u0435\u0441\u0442\u044c, \u043f\u0440\u044b\u0436\u043e\u043a \u043d\u0430 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u0441\u0442\u0435\u043a.<\/p>\n<h4>\u0421\u043c\u0435\u0440\u0442\u044c: \u0442\u0440\u044e\u043a \u0441 \u043f\u043e\u0434\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430<\/h4>\n<p>\u041a\u0430\u043a \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0443\u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0432\u0435\u0440\u043d\u0443\u043b\u0430\u0441\u044c \u0438 \u043f\u043e\u0440\u0430 \u043f\u0440\u0438\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f? \u041d\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0432\u0435\u0442 \u00ab\u0441\u043b\u0435\u0434\u0438\u0442\u00bb, \u043d\u043e \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u043c\u0443 \u0438 \u043d\u0435\u0437\u0430\u0447\u0435\u043c. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u0435\u043a \u043a\u0430\u0436\u0434\u043e\u0439 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0441 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u043e\u0431\u0440\u0430\u043d \u0441 \u043e\u0431\u043c\u0430\u043d\u043e\u043c (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/stubs.go#L298-L302\" rel=\"noopener noreferrer nofollow\"><code>stubs.go:298<\/code><\/a>):<\/p>\n<blockquote>\n<p>goexit is the return stub at the top of every goroutine call stack. Each goroutine stack is constructed as if goexit called the goroutine\u2019s entry point function.<\/p>\n<\/blockquote>\n<p>\u0421\u0442\u0435\u043a \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u0442\u0430\u043a, \u0431\u0443\u0434\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0432\u044b\u0437\u0432\u0430\u043b\u0430 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u0430\u044f \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0430 <code>goexit<\/code>. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0447\u0435\u0441\u0442\u043d\u043e \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0430 <code>return<\/code> \u0438 \u00ab\u0432\u0435\u0440\u043d\u0443\u043b\u0430\u0441\u044c\u00bb \u0442\u0443\u0434\u0430, \u043e\u0442\u043a\u0443\u0434\u0430 \u0435\u0435 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u043b: \u043f\u0440\u044f\u043c\u0438\u043a\u043e\u043c \u0432 \u0443\u0431\u043e\u0440\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u0434 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430. \u0422\u043e\u0442 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u0432 <code>_Gdead<\/code>, \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044f \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439, \u043a\u0430\u043a \u0438 <code>gopark<\/code>, \u0437\u043e\u0432\u0435\u0442 <code>schedule()<\/code>. \u041f\u043e\u0442\u043e\u043a \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0431\u0435\u0440\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<p>\u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u044e\u043a\u0430 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u043f\u043e\u0447\u0435\u043c\u0443 \u0443 go f() \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00bb. \u041d\u0435\u043a\u043e\u043c\u0443 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u043c\u0443 \u043a\u043e\u0434\u0443, \u0430 \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0435, \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u044f\u043c\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442: \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f. \u0425\u043e\u0447\u0435\u0448\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b, \u0431\u0435\u0440\u0438 \u043a\u0430\u043d\u0430\u043b \u0438\u043b\u0438 \u043e\u0431\u0449\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0443\u0442\u0435\u0439 \u043d\u0435\u0442 \u043f\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044e.<\/p>\n<p>\u0410 \u043a\u0443\u0434\u0430 \u0434\u0435\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 <code>g<\/code> \u0441 \u0435\u0435 \u0441\u0442\u0435\u043a\u043e\u043c? \u0412 \u043c\u0443\u0441\u043e\u0440? \u041d\u0435\u0442: \u0432 \u043f\u0443\u043b. \u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e P \u0435\u0441\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 <code>gFree<\/code>; \u043c\u0435\u0440\u0442\u0432\u0430\u044f <code>g<\/code> \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u0442\u0443\u0434\u0430 \u0438 \u0436\u0434\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e <code>go f()<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0437\u044c\u043c\u0435\u0442 \u0435\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0438 \u043d\u043e\u0432\u043e\u0439. \u0421\u0442\u0435\u043a \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043a\u043b\u0435\u0435\u043d\u043d\u044b\u043c \u043a \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435.<\/p>\n<p>\u0412\u043e\u0442 \u043f\u043e\u0447\u0435\u043c\u0443 <code>go f()<\/code> \u0432 \u0433\u043e\u0440\u044f\u0447\u0435\u043c \u0446\u0438\u043a\u043b\u0435 \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u0443\u0435\u0442: \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u0438 \u0441\u0442\u0435\u043a \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0441\u043c\u0435\u0440\u0442\u0435\u0439. \u0418 \u0432\u043e\u0442 \u043f\u043e\u0447\u0435\u043c\u0443 <code>runtime.NumGoroutine()<\/code> \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0434\u0435\u0441\u044f\u0442\u043e\u043a \u0433\u043e\u0440\u0443\u0442\u0438\u043d, \u0430 \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u043e\u0434 \u0441\u0442\u0435\u043a\u0438 \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e: \u043c\u0435\u0440\u0442\u0432\u044b\u0435 \u043b\u0435\u0436\u0430\u0442 \u0432 \u043f\u0443\u043b\u0435 \u0441\u043e \u0441\u0442\u0435\u043a\u0430\u043c\u0438 \u043d\u0430\u0433\u043e\u0442\u043e\u0432\u0435.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/092\/8e9\/6a8\/0928e96a80e477442cb381f22ec346ea.png\" alt=\"\u0421\u043c\u0435\u0440\u0442\u044c \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b: \u043f\u043e\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 goexit \u0438 \u043f\u0443\u043b\" width=\"1170\" height=\"672\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/092\/8e9\/6a8\/0928e96a80e477442cb381f22ec346ea.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/092\/8e9\/6a8\/0928e96a80e477442cb381f22ec346ea.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0421\u043c\u0435\u0440\u0442\u044c \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b: \u043f\u043e\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 goexit \u0438 \u043f\u0443\u043b<\/figcaption><\/div>\n<\/figure>\n<h4>\u0412\u0440\u0435\u0437\u043a\u0430: \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u0442 goroutine.Kill()<\/h4>\n<p>\u0412\u043e\u043f\u0440\u043e\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0434\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439, \u043a\u0442\u043e \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0437\u0430\u0432\u0438\u0441\u0448\u0443\u044e \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443: \u043a\u0430\u043a \u0443\u0431\u0438\u0442\u044c \u0435\u0435 \u0441\u043d\u0430\u0440\u0443\u0436\u0438? \u041d\u0438\u043a\u0430\u043a, \u0438 \u044d\u0442\u043e \u043d\u0435 \u0443\u043f\u0443\u0449\u0435\u043d\u0438\u0435, \u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u0412 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 <code>g<\/code> \u043d\u0435\u0442 \u043d\u0438 \u043f\u043e\u043b\u044f \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430, \u043d\u0438 \u0440\u0443\u0447\u043a\u0438 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f; \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 (<code>runtime.Goexit()<\/code>) \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0435 \u0441\u0430\u043c\u043e\u0439.<\/p>\n<p>\u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f. \u0423\u0431\u0438\u0439\u0441\u0442\u0432\u043e \u0438\u0437\u0432\u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u043e \u0431\u044b \u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0447\u0443\u0436\u043e\u0439 \u0441\u0442\u0435\u043a \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435: \u0441 \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u043c\u044c\u044e\u0442\u0435\u043a\u0441\u0430\u043c\u0438, \u043d\u0435\u0434\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c\u0438, \u043d\u0435\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c\u0438 defer. \u0414\u0430\u0436\u0435 \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u0435, \u043a\u0430\u043a \u043c\u044b \u0432\u0438\u0434\u0435\u043b\u0438, \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u044c\u0431\u043e\u0439 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435, \u0430 \u043d\u0435 \u043f\u0440\u0438\u043a\u0430\u0437\u043e\u043c \u0443\u043c\u0435\u0440\u0435\u0442\u044c. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a\u043e\u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439: <code>context.Context<\/code>, \u043a\u0430\u043d\u0430\u043b <code>done<\/code>, \u0444\u043b\u0430\u0433. \u0413\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u0430\u043c\u0430 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u044c\u0441\u044f \u0443\u0439\u0442\u0438.<\/p>\n<p>\u0421\u044e\u0434\u0430 \u0436\u0435 \u043f\u0440\u0438\u043c\u044b\u043a\u0430\u0435\u0442 \u0433\u0440\u0430\u0431\u043b\u044f \u0441 recover. \u0421\u043f\u0438\u0441\u043a\u0438 \u043f\u0430\u043d\u0438\u043a \u0438 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 (<code>_panic<\/code>, <code>_defer<\/code>) \u043b\u0435\u0436\u0430\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b <code>g<\/code>, \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0441\u0432\u043e\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 <code>recover()<\/code> \u0432 main \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u043e\u0439\u043c\u0430\u0435\u0442 \u043f\u0430\u043d\u0438\u043a\u0443 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0439 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b: <code>go func() { panic(\"boom\") }()<\/code> \u0440\u043e\u043d\u044f\u0435\u0442 \u0432\u0441\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u044b defer \u043d\u0438 \u0441\u0442\u043e\u044f\u043b\u043e \u0432\u043e\u043a\u0440\u0443\u0433. \u041b\u043e\u0432\u0438\u0442\u044c \u043f\u0430\u043d\u0438\u043a\u0443 \u043d\u0443\u0436\u043d\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u043e\u0439 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b, \u0433\u0434\u0435 \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f.<\/p>\n<h3>\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 &#8212; \u044d\u0442\u043e \u0434\u0435\u0448\u0435\u0432\u043e: \u043a\u0430\u043d\u0430\u043b\u044b \u0438 \u043c\u044c\u044e\u0442\u0435\u043a\u0441\u044b \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c<\/h3>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u043b\u043e\u0439: \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043c\u0435\u0436\u0434\u0443 <code>gopark<\/code> \u0438 \u043f\u0440\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u0435\u043c, \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043a\u0430\u043d\u0430\u043b\u0430. \u0417\u0430\u043e\u0434\u043d\u043e \u0437\u0430\u043a\u0440\u043e\u0435\u043c \u0446\u0438\u0444\u0440\u0443 -99.88%, \u043f\u043e\u0434\u0432\u0435\u0448\u0435\u043d\u043d\u0443\u044e \u0441 \u0433\u043b\u0430\u0432\u044b \u043f\u0440\u043e Go 1.5.<\/p>\n<h4>\u0414\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u043d\u0430<\/h4>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u043e\u0434\u043e\u0440\u0430\u0437\u0434\u0435\u043b, \u0440\u0430\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0432\u0441\u044f \u0433\u043b\u0430\u0432\u0430. \u0412 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 Go \u0441\u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0434\u0432\u0430 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u043d\u0430.<\/p>\n<p>\u0421\u043e\u043d \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b: <code>gopark<\/code>, \u0441\u043c\u0435\u043d\u0430 \u0441\u0442\u0430\u0442\u0443\u0441\u0430, \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u043f\u043e\u0442\u043e\u043a \u0441\u0432\u043e\u0431\u043e\u0434\u0435\u043d \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u0430\u043b\u044c\u0448\u0435. \u0421\u043e\u043d \u043f\u043e\u0442\u043e\u043a\u0430: \u043a\u043e\u0433\u0434\u0430 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0443 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0447\u0435\u0433\u043e \u0434\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u0443, \u0442\u043e\u0442 \u043f\u0430\u0440\u043a\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u0432\u044b\u0437\u043e\u0432\u043e\u043c (\u043d\u0430 Linux \u044d\u0442\u043e futex), \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u044f\u0434\u0440\u043e \u0438 \u043d\u0435 \u0442\u0440\u0430\u0442\u0438\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440. \u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u043e\u043d \u0434\u0435\u0448\u0435\u0432 \u0438 \u0441\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0440\u0430\u0437 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u0412\u0442\u043e\u0440\u043e\u0439 \u0434\u043e\u0440\u043e\u0433 \u0438 \u0441\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435\u0442 \u0432\u043e\u043e\u0431\u0449\u0435.<\/p>\n<p>\u0412\u0441\u0435, \u0447\u0442\u043e \u0442\u044b \u0437\u043e\u0432\u0435\u0448\u044c \u00ab\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u043e\u0439\u00bb \u0432 Go-\u043a\u043e\u0434\u0435 (\u043a\u0430\u043d\u0430\u043b, <code>sync.Mutex<\/code>, <code>WaitGroup.Wait<\/code>, <code>time.Sleep<\/code>), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u043e\u043d. \u041e\u0442\u0441\u044e\u0434\u0430 \u0438 \u043e\u0442\u0432\u0435\u0442, \u043f\u043e\u0447\u0435\u043c\u0443 \u0432 Go \u043f\u0438\u0448\u0443\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u044f\u0437\u044b\u043a\u0438 \u0433\u043e\u0440\u043e\u0434\u044f\u0442 \u043a\u043e\u043b\u0431\u044d\u043a\u0438 \u0438 async\/await. \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u043e\u0438\u0442 \u043a\u0430\u043a \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0431\u0445\u043e\u0434\u043d\u044b\u0445 \u043c\u0430\u043d\u0435\u0432\u0440\u0430\u0445.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b5a\/3c5\/6fc\/b5a3c56fc0a21443469cafb99c8329a6.png\" alt=\"\u0414\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u043d\u0430: \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0438 \u043f\u043e\u0442\u043e\u043a\u0430\" width=\"1170\" height=\"672\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/b5a\/3c5\/6fc\/b5a3c56fc0a21443469cafb99c8329a6.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b5a\/3c5\/6fc\/b5a3c56fc0a21443469cafb99c8329a6.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0414\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u043d\u0430: \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0438 \u043f\u043e\u0442\u043e\u043a\u0430<\/figcaption><\/div>\n<\/figure>\n<h4>\u041a\u0430\u043d\u0430\u043b: \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441 \u0437\u0430\u043c\u043a\u043e\u043c, \u0430 \u043d\u0435 \u0442\u0440\u0443\u0431\u0430 \u0432 \u044f\u0434\u0440\u0435<\/h4>\n<p>\u041d\u043e\u0432\u0438\u0447\u043a\u0438 \u0447\u0430\u0441\u0442\u043e \u0434\u0443\u043c\u0430\u044e\u0442, \u0447\u0442\u043e \u043a\u0430\u043d\u0430\u043b \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u043a\u0430\u043a \u0447\u0442\u043e-\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0435, \u0432\u0440\u043e\u0434\u0435 \u043f\u0430\u0439\u043f\u0430 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438. \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/chan.go#L34-L46\" rel=\"noopener noreferrer nofollow\"><code>chan.go:34<\/code><\/a>):<\/p>\n<pre><code class=\"go\">\/\/ src\/runtime\/chan.go:34 (Go 1.27), \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043etype hchan struct {qcount   uint           \/\/ \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043b\u0435\u0436\u0438\u0442 \u0441\u0435\u0439\u0447\u0430\u0441dataqsiz uint           \/\/ \u0435\u043c\u043a\u043e\u0441\u0442\u044c \u0431\u0443\u0444\u0435\u0440\u0430 (0 \u0443 \u043d\u0435\u0431\u0443\u0444\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e)buf      unsafe.Pointer \/\/ \u043a\u043e\u043b\u044c\u0446\u0435\u0432\u043e\u0439 \u0431\u0443\u0444\u0435\u0440 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439closed   uint32sendq    waitq \/\/ \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0436\u0434\u0443\u0449\u0438\u0445 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u0435\u0439recvq    waitq \/\/ \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0436\u0434\u0443\u0449\u0438\u0445 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0435\u0439lock     mutex}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0431\u044b\u0447\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430: \u0431\u0443\u0444\u0435\u0440, \u0434\u0432\u0430 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430, \u0434\u0432\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0436\u0434\u0443\u0449\u0438\u0445 \u0438 \u043c\u044c\u044e\u0442\u0435\u043a\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u0435 \u044d\u0442\u043e \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442. \u042f\u0434\u0440\u043e \u041e\u0421 \u043f\u0440\u043e \u0442\u0432\u043e\u0438 \u043a\u0430\u043d\u0430\u043b\u044b \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e. \u041a\u0430\u0436\u0434\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0432\u0437\u044f\u0442\u0438\u044f <code>lock<\/code>: \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u043d\u0430\u043b \u043f\u043e\u0442\u043e\u043a\u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0435\u043d \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0436\u0435 \u043e\u043d \u043d\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u0435\u043d.<\/p>\n<p>\u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u044f\u0445 <code>sendq<\/code> \u0438 <code>recvq<\/code> \u043b\u0435\u0436\u0430\u0442 \u043d\u0435 \u0441\u0430\u043c\u0438 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b, \u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b-\u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0438 <code>sudog<\/code> (\u0442\u0430\u043b\u043e\u043d\u044b \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f). \u0422\u0430\u043b\u043e\u043d \u0445\u0440\u0430\u043d\u0438\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u0438 \u0430\u0434\u0440\u0435\u0441, \u043a\u0443\u0434\u0430 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u0437\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0417\u0430\u0447\u0435\u043c \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a? \u041e\u0434\u043d\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 <code>select<\/code> \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u043e\u044f\u0442\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044f\u0445 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0441\u0440\u0430\u0437\u0443, \u0430 \u0443 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b <code>g<\/code> \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u0438: \u0432 \u0434\u0432\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0435\u0435 \u0441\u0430\u043c\u0443 \u043d\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0448\u044c, \u0430 \u0442\u0430\u043b\u043e\u043d\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0433\u043e\u0434\u043d\u043e.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ce8\/505\/42f\/ce850542f18183febb52938310fe66be.png\" alt=\"\u041a\u0430\u043d\u0430\u043b \u0438\u0437\u043d\u0443\u0442\u0440\u0438: hchan \u0438 \u0442\u0430\u043b\u043e\u043d\u044b sudog\" width=\"1170\" height=\"672\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ce8\/505\/42f\/ce850542f18183febb52938310fe66be.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ce8\/505\/42f\/ce850542f18183febb52938310fe66be.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u0430\u043d\u0430\u043b \u0438\u0437\u043d\u0443\u0442\u0440\u0438: hchan \u0438 \u0442\u0430\u043b\u043e\u043d\u044b sudog<\/figcaption><\/div>\n<\/figure>\n<h4>\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430: \u0442\u0440\u0438 \u0438\u0441\u0445\u043e\u0434\u0430, \u0438 \u0431\u0443\u0444\u0435\u0440 \u043b\u0438\u0448\u044c \u0432\u0442\u043e\u0440\u043e\u0439<\/h4>\n<p>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 <code>ch &lt;- v<\/code>? \u041f\u043e\u0434 \u043b\u043e\u043a\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0440\u043e\u0432\u043d\u043e \u0442\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430, \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443. \u041f\u0435\u0440\u0432\u044b\u0439: \u0432 <code>recvq<\/code> \u0443\u0436\u0435 \u0441\u043f\u0438\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c. \u0422\u043e\u0433\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0435\u043c\u0443 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u043c\u0438\u043d\u0443\u044f \u0431\u0443\u0444\u0435\u0440, \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f \u0431\u0443\u0434\u044f\u0442. \u041f\u0440\u044f\u043c\u043e-\u0442\u0430\u043a\u0438 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/chan.go#L382-L383\" rel=\"noopener noreferrer nofollow\"><code>chan.go:382<\/code><\/a>):<\/p>\n<blockquote>\n<p>Sends and receives on unbuffered or empty-buffered channels are the only operations where one running goroutine writes to the stack of another running goroutine.<\/p>\n<\/blockquote>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c <code>memmove<\/code> \u0438\u0437 \u0441\u0442\u0435\u043a\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044f \u043f\u0440\u044f\u043c\u043e \u0432 \u0441\u0442\u0435\u043a \u0441\u043f\u044f\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f, \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0438\u0437 \u0435\u0433\u043e \u0442\u0430\u043b\u043e\u043d\u0430. \u042d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0432\u043e \u0432\u0441\u0435\u043c Go, \u0433\u0434\u0435 \u043e\u0434\u043d\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u043f\u0438\u0448\u0435\u0442 \u0432 \u0441\u0442\u0435\u043a \u0434\u0440\u0443\u0433\u043e\u0439: \u0440\u0430\u0434\u0438 \u043d\u0435\u0433\u043e \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043e \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u043e\u043c \u043c\u0443\u0441\u043e\u0440\u0430. \u041d\u0435\u0431\u0443\u0444\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u043d\u0435 \u00ab\u0431\u0443\u0444\u0435\u0440 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043d\u043e\u043b\u044c\u00bb. \u042d\u0442\u043e \u0440\u0443\u043a\u043e\u043f\u043e\u0436\u0430\u0442\u0438\u0435: \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043f\u0440\u044b\u0433\u0438\u0432\u0430\u0435\u0442 \u0438\u0437 \u0441\u0442\u0435\u043a\u0430 \u0432 \u0441\u0442\u0435\u043a \u0437\u0430 \u043e\u0434\u043d\u0443 \u043a\u043e\u043f\u0438\u044e.<\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u0445\u043e\u0434: \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f \u043d\u0435\u0442, \u043d\u043e \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u0435\u0441\u0442\u044c \u043c\u0435\u0441\u0442\u043e. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u0431\u0443\u0444\u0435\u0440, \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c \u0431\u0435\u0436\u0438\u0442 \u0434\u0430\u043b\u044c\u0448\u0435. \u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u0435\u0442\u0438\u0439 \u0438\u0441\u0445\u043e\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043f\u0430\u0442\u044c: \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f \u043d\u0435\u0442, \u0431\u0443\u0444\u0435\u0440 \u043f\u043e\u043b\u043e\u043d \u0438\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442. \u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c \u0432\u044b\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0431\u0435 \u0442\u0430\u043b\u043e\u043d, \u0432\u0441\u0442\u0430\u0435\u0442 \u0432 <code>sendq<\/code> \u0438 \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 <code>gopark<\/code>. \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0432 <code>chansend<\/code> \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u0441\u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/chan.go#L257\" rel=\"noopener noreferrer nofollow\"><code>chan.go:257<\/code><\/a>):<\/p>\n<blockquote>\n<p>Block on the channel. Some receiver will complete our operation for us.<\/p>\n<\/blockquote>\n<p>\u00ab\u041a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442 \u043d\u0430\u0448\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0437\u0430 \u043d\u0430\u0441\u00bb. \u0421\u043f\u044f\u0449\u0438\u0439 \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u0447\u0435\u0433\u043e, \u0432\u0441\u044e \u043e\u0441\u0442\u0430\u0432\u0448\u0443\u044e\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0443 (\u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0440\u0430\u0437\u0431\u0443\u0434\u0438\u0442\u044c) \u0434\u043e\u0434\u0435\u043b\u044b\u0432\u0430\u0435\u0442 \u0437\u0430 \u043d\u0435\u0433\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430. \u041f\u0440\u0438\u0435\u043c \u0438\u0437 \u043a\u0430\u043d\u0430\u043b\u0430 \u0437\u0435\u0440\u043a\u0430\u043b\u0435\u043d: \u0436\u0434\u0443\u0449\u0438\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c, \u043f\u043e\u0442\u043e\u043c \u0431\u0443\u0444\u0435\u0440, \u043f\u043e\u0442\u043e\u043c \u0441\u043e\u043d \u0432 <code>recvq<\/code>.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/813\/12b\/d8c\/81312bd8c68201ee227f4d5ddf2de444.png\" alt=\"\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0432 \u043a\u0430\u043d\u0430\u043b: \u0442\u0440\u0438 \u0438\u0441\u0445\u043e\u0434\u0430 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443\" width=\"1170\" height=\"672\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/813\/12b\/d8c\/81312bd8c68201ee227f4d5ddf2de444.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/813\/12b\/d8c\/81312bd8c68201ee227f4d5ddf2de444.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0432 \u043a\u0430\u043d\u0430\u043b: \u0442\u0440\u0438 \u0438\u0441\u0445\u043e\u0434\u0430 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443<\/figcaption><\/div>\n<\/figure>\n<h4>\u041f\u0440\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u0435: \u0431\u0435\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438<\/h4>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u0435, \u0438 \u0437\u0434\u0435\u0441\u044c \u0440\u0430\u0437\u0432\u044f\u0437\u043a\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u043e -99.88%. \u0413\u043e\u0440\u0443\u0442\u0438\u043d\u0430, \u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0432\u0448\u0430\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043f\u044f\u0449\u0435\u043c\u0443, \u0437\u043e\u0432\u0435\u0442 <code>goready<\/code>: \u0441\u0442\u0430\u0442\u0443\u0441 \u0441\u043f\u044f\u0449\u0435\u0433\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 <code>_Grunnable<\/code>, \u0438 \u043e\u043d \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c. \u0412\u043e\u043f\u0440\u043e\u0441: \u0432 \u043a\u0430\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438? \u0412 \u0445\u0432\u043e\u0441\u0442 \u0447\u0435\u0441\u0442\u043d\u043e, \u043d\u043e \u0434\u043e\u0440\u043e\u0433\u043e: \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u0442\u043e\u044f\u0442\u044c \u0441\u043e\u0442\u043d\u0438 \u0433\u043e\u0440\u0443\u0442\u0438\u043d, \u0438 \u0440\u0430\u0437\u0431\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0447\u0435\u0440\u0435\u0437 \u0446\u0435\u043b\u044b\u0439 \u043a\u0440\u0443\u0433.<\/p>\n<p>\u0420\u0430\u043d\u0442\u0430\u0439\u043c \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0438\u043d\u0430\u0447\u0435. \u0420\u0430\u0437\u0431\u0443\u0436\u0435\u043d\u043d\u0430\u044f \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u043a\u043b\u0430\u0434\u0435\u0442\u0441\u044f \u0432 \u043e\u0441\u043e\u0431\u044b\u0439 \u0441\u043b\u043e\u0442 <code>runnext<\/code> \u043d\u0430 P \u0431\u0443\u0434\u0438\u043b\u044c\u0449\u0438\u043a\u0430 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439, \u0432\u043d\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0432 \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u0435\u0433\u043e \u043a\u0432\u0430\u043d\u0442\u0430. \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043a \u0441\u043b\u043e\u0442\u0443 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442 \u043c\u043e\u0442\u0438\u0432 (<a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/runtime2.go#L808-L820\" rel=\"noopener noreferrer nofollow\"><code>runtime2.go:808<\/code><\/a>):<\/p>\n<blockquote>\n<p>If a set of goroutines is locked in a communicate-and-wait pattern, this schedules that set as a unit and eliminates the (potentially large) scheduling latency.<\/p>\n<\/blockquote>\n<p>\u041d\u0430\u0431\u043e\u0440 \u0433\u043e\u0440\u0443\u0442\u0438\u043d, \u043e\u0431\u0449\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0432 \u0441\u0442\u0438\u043b\u0435 \u00ab\u043f\u0435\u0440\u0435\u0434\u0430\u043b \u0438 \u0436\u0434\u0443\u00bb, \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0435\u0434\u0438\u043d\u043e\u0435 \u0446\u0435\u043b\u043e\u0435. \u042d\u0442\u043e\u0442 \u0441\u043b\u043e\u0442 \u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 Go 1.5. \u0414\u0432\u0435 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b, \u0438\u0433\u0440\u0430\u044e\u0449\u0438\u0435 \u0432 \u043f\u0438\u043d\u0433-\u043f\u043e\u043d\u0433 \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u043d\u0430\u043b, \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0434\u0430\u0440\u0430 \u0432\u0441\u0442\u0430\u0432\u0430\u0442\u044c \u0432 \u0445\u0432\u043e\u0441\u0442 \u043e\u0431\u0449\u0435\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u0438 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a BenchmarkPingPongHog \u0443\u0441\u043a\u043e\u0440\u0438\u043b\u0441\u044f \u0441 684 287 \u043d\u0441 \u0434\u043e 825 \u043d\u0441 \u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e. \u0422\u0435 \u0441\u0430\u043c\u044b\u0435 \u043c\u0438\u043d\u0443\u0441 99.88%. \u0418 \u043d\u0430\u0448 \u0437\u0430\u043c\u0435\u0440 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 (103 \u043d\u0441 \u043d\u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u043d\u0430\u043b) \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u0436\u0435 \u0441\u043b\u043e\u0442\u0443.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c0b\/ce2\/79c\/c0bce279c91ef5e971cd82217876e8dd.png\" alt=\"\u041f\u0440\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438: \u0441\u043b\u043e\u0442 runnext\" width=\"1170\" height=\"584\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/c0b\/ce2\/79c\/c0bce279c91ef5e971cd82217876e8dd.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c0b\/ce2\/79c\/c0bce279c91ef5e971cd82217876e8dd.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0440\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438: \u0441\u043b\u043e\u0442 runnext<\/figcaption><\/div>\n<\/figure>\n<h4>\u041c\u044c\u044e\u0442\u0435\u043a\u0441: \u0442\u043e\u0442 \u0436\u0435 \u0441\u043e\u043d, \u0432\u0438\u0434 \u0441\u0431\u043e\u043a\u0443<\/h4>\n<p><code>sync.Mutex<\/code> \u0432 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438 &#8212; \u043e\u0434\u0438\u043d \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432, \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c-\u0438-\u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c, \u0432\u043e\u043e\u0431\u0449\u0435 \u0431\u0435\u0437 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0431\u043e\u0440\u044c\u0431\u0435 \u0437\u0430 \u0437\u0430\u043c\u043e\u043a. \u041d\u043e\u0432\u0438\u0447\u043e\u043a \u0438\u0437 C++ \u0438\u043b\u0438 Java \u0436\u0434\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u0432\u0448\u0438\u0439 \u043f\u043e\u0442\u043e\u043a \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u044f\u0434\u0440\u0435. \u0412 Go \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u0432\u0448\u0430\u044f \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 (\u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u0447\u0435\u0442\u044b\u0440\u0435 \u0437\u0430\u0445\u043e\u0434\u0430, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u0440\u044f\u0434\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u044f\u0434\u0440\u0430: \u0435\u0441\u0442\u044c \u0448\u0430\u043d\u0441, \u0447\u0442\u043e \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u043e\u0442\u043f\u0443\u0441\u0442\u0438\u0442 \u0437\u0430\u043c\u043e\u043a \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441), \u0430 \u043f\u043e\u0442\u043e\u043c \u0438\u0434\u0435\u0442 \u0441\u043f\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0442 \u0436\u0435 <code>gopark<\/code>, \u0447\u0442\u043e \u0438 \u043a\u0430\u043d\u0430\u043b, \u0441 \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 <code>sync.Mutex.Lock<\/code> \u0434\u043b\u044f \u0434\u0430\u043c\u043f\u0430. \u041f\u043e\u0442\u043e\u043a, \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u0441\u0432\u043e\u0431\u043e\u0434\u0435\u043d \u0438 \u0431\u0435\u0440\u0435\u0442 \u0434\u0440\u0443\u0433\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<p>\u041e\u0447\u0435\u0440\u0435\u0434\u044c \u0436\u0434\u0443\u0449\u0438\u0445 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0436\u0438\u0432\u0435\u0442 \u043d\u0435 \u0432 \u043c\u044c\u044e\u0442\u0435\u043a\u0441\u0435 (\u043e\u043d \u0432\u0441\u0435\u0433\u043e 8 \u0431\u0430\u0439\u0442, \u0442\u0443\u0434\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u043b\u0435\u0437\u0430\u0435\u0442), \u0430 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0441\u0435\u043c\u0430\u0444\u043e\u0440\u043e\u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430, \u0438 \u0432 \u043d\u0435\u0439 \u043b\u0435\u0436\u0430\u0442 \u0432\u0441\u0435 \u0442\u0435 \u0436\u0435 \u0442\u0430\u043b\u043e\u043d\u044b <code>sudog<\/code>. \u041a\u0430\u043d\u0430\u043b \u0438 \u043c\u044c\u044e\u0442\u0435\u043a\u0441 \u0443\u0441\u044b\u043f\u043b\u044f\u044e\u0442 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u043e\u0434\u043d\u0438\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u043c, \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0432\u0435\u0441\u043a\u0430. \u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0442\u044b: <code>select<\/code> \u0442\u043e\u0436\u0435 \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e, \u043e\u043d \u0432\u044b\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043f\u043e \u0442\u0430\u043b\u043e\u043d\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u043d\u0430\u043b, \u0432\u0441\u0442\u0430\u0435\u0442 \u0432\u043e \u0432\u0441\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0441\u0440\u0430\u0437\u0443 \u0438 \u0437\u0430\u0441\u044b\u043f\u0430\u0435\u0442 \u043e\u0434\u043d\u0438\u043c <code>gopark<\/code>; \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043e\u043f\u0440\u043e\u0441\u0430 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u043f\u043e \u043a\u0440\u0443\u0433\u0443 \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442.<\/p>\n<p>\u041f\u043e\u0434 \u044d\u0442\u043e\u0439 \u0432\u044b\u0432\u0435\u0441\u043a\u043e\u0439 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0435\u0449\u0435 \u0434\u0432\u0430 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c \u043c\u0435\u0441\u0442\u0430. \u041c\u044c\u044e\u0442\u0435\u043a\u0441, \u043f\u0440\u043e\u0436\u0434\u0430\u0432\u0448\u0438\u0439 \u0434\u043e\u043b\u044c\u0448\u0435 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c \u0433\u043e\u043b\u043e\u0434\u0430\u043d\u0438\u044f: \u0437\u0430\u043c\u043e\u043a \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0440\u0430\u0437\u044b\u0433\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043c\u0438, \u0430 \u0432\u0440\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438. \u0410 <code>select<\/code> \u043f\u0435\u0440\u0435\u0434 \u0441\u043d\u043e\u043c \u043e\u0431\u0445\u043e\u0434\u0438\u0442 \u043a\u0430\u043d\u0430\u043b\u044b \u0434\u0432\u0430\u0436\u0434\u044b. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c, \u0438\u043d\u0430\u0447\u0435 \u043f\u0435\u0440\u0432\u044b\u0439 case \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0435 \u043f\u043e\u0431\u0435\u0436\u0434\u0430\u043b \u0431\u044b \u0432\u0441\u0435\u0433\u0434\u0430. \u041f\u043e\u0442\u043e\u043c \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443, \u0438\u043d\u0430\u0447\u0435 \u0434\u0432\u0430 <code>select<\/code> \u043d\u0430 \u043e\u0434\u043d\u0438\u0445 \u043a\u0430\u043d\u0430\u043b\u0430\u0445 \u0432\u0441\u0442\u0430\u043b\u0438 \u0431\u044b \u0432 \u0434\u0435\u0434\u043b\u043e\u043a \u043d\u0430 \u0437\u0430\u043c\u043a\u0430\u0445. <a href=\"https:\/\/t.me\/bascodeCh\/120\" rel=\"noopener noreferrer nofollow\">\u0420\u0430\u0437\u043e\u0431\u0440\u0430\u043b \u043e\u0431\u0430 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0432 \u043a\u0430\u043d\u0430\u043b\u0435<\/a>.<\/p>\n<h4>\u0412\u043e\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435: \u043c\u043e\u043b\u0447\u0430\u043b\u0438\u0432\u044b\u0439 \u0434\u0435\u0434\u043b\u043e\u043a<\/h4>\n<p>\u0424\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u0447\u0430\u0441\u0442\u0438. \u0412\u043e\u0437\u044c\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443: main \u043f\u0438\u0448\u0435\u0442 \u0432 \u043a\u0430\u043d\u0430\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0447\u0438\u0442\u0430\u0435\u0442. \u041e\u043d\u0430 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e \u043f\u0430\u0434\u0430\u0435\u0442 \u0441\u043e \u0437\u043d\u0430\u043c\u0435\u043d\u0438\u0442\u044b\u043c <code>fatal error: all goroutines are asleep - deadlock!<\/code>.<\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c \u043f\u0440\u043e\u0434: HTTP-\u0441\u0435\u0440\u0432\u0435\u0440, \u0441\u043e\u0442\u043d\u044f \u0433\u043e\u0440\u0443\u0442\u0438\u043d \u043d\u0430\u043c\u0435\u0440\u0442\u0432\u043e \u0437\u0430\u0432\u0438\u0441\u043b\u0430 \u043d\u0430 \u043a\u0430\u043d\u0430\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0438\u043a\u0442\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0437\u0430\u043a\u0440\u043e\u0435\u0442. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0443\u043f\u0430\u0434\u0435\u0442 \u0441 \u0442\u0435\u043c \u0436\u0435 fatal error? \u041f\u043e\u0434\u0443\u043c\u0430\u0439, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p>\u041d\u0435 \u0443\u043f\u0430\u0434\u0435\u0442. \u041e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043c\u043e\u043b\u0447\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0441\u043e\u0442\u043d\u0435\u0439 \u0437\u0430\u0432\u0438\u0441\u0448\u0438\u0445 \u0433\u043e\u0440\u0443\u0442\u0438\u043d \u0434\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430. \u0420\u0430\u0437\u0433\u0430\u0434\u043a\u0430 \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440: <code>checkdead()<\/code> \u043d\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0433\u0440\u0430\u0444 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0439, \u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u00ab\u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u043b\u0438 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0438\u00bb (\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0432 <a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/proc.go#L6416\" rel=\"noopener noreferrer nofollow\"><code>proc.go:6416<\/code><\/a>, \u0441\u0430\u043c\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432 <a href=\"https:\/\/github.com\/golang\/go\/blob\/go1.27.0\/src\/runtime\/proc.go#L6447-L6450\" rel=\"noopener noreferrer nofollow\"><code>proc.go:6447<\/code><\/a>):<\/p>\n<pre><code class=\"go\">\/\/ src\/runtime\/proc.go:6416 \u0438 :6447 (Go 1.27), checkdead\/\/ The check is based on number of running M's, if 0 -&gt; deadlock.run := mcount() - sched.nmidle - sched.nmidlelocked - sched.nmsysif run &gt; run0 {return}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u043a\u0430 \u0436\u0438\u0432 \u0445\u043e\u0442\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0442\u043e\u043a (\u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043f\u043e\u0440\u0442, \u0433\u0434\u0435-\u0442\u043e \u0442\u0438\u043a\u0430\u0435\u0442 <code>time.Ticker<\/code>, \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u043b\u044e\u0431\u0430\u044f \u0436\u0438\u0432\u0430\u044f \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430), \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435, \u0438 \u0441\u043e\u0442\u043d\u044f \u0437\u0430\u0432\u0438\u0441\u0448\u0438\u0445 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0430. \u0414\u0430\u0436\u0435 \u043e\u0434\u0438\u043d\u043e\u043a\u0438\u0439 <code>time.Sleep<\/code> \u0432 \u043b\u044e\u0431\u043e\u0439 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0435 \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443: \u0442\u0430\u0439\u043c\u0435\u0440\u044b \u0442\u043e\u0436\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u043c \u0436\u0438\u0437\u043d\u0438. \u0423\u0447\u0435\u0431\u043d\u044b\u0439 hello-world \u043f\u0430\u0434\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432 \u043d\u0435\u043c \u0437\u0430\u0441\u043d\u0443\u043b\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0441\u0435.<\/p>\n<p>\u041e\u0442\u0441\u044e\u0434\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u044b\u0432\u043e\u0434: \u043d\u0430 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u0434\u0435\u0434\u043b\u043e\u043a\u043e\u0432 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0438\u0433\u0434\u0435, \u043a\u0440\u043e\u043c\u0435 \u0443\u0447\u0435\u0431\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432. \u0417\u0430\u0432\u0438\u0441\u0448\u0438\u0435 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0432 \u043f\u0440\u043e\u0434\u0435 \u0438\u0449\u0443\u0442 \u0438\u043d\u0430\u0447\u0435: <code>\/debug\/pprof\/goroutine?debug=2<\/code> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0441 \u0442\u0435\u043c\u0438 \u0441\u0430\u043c\u044b\u043c\u0438 <code>[chan receive, 10 minutes]<\/code>, \u0438 \u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u0443\u043c\u0435\u0435\u0448\u044c. \u0410 \u0432 \u0441\u0432\u0435\u0436\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 (\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u0432 1.26, \u0440\u0435\u043b\u0438\u0437 \u0432 1.27) \u0443 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0443\u0442\u0435\u0447\u0435\u043a \u0433\u043e\u0440\u0443\u0442\u0438\u043d, \u043f\u0440\u043e \u043d\u0435\u0433\u043e \u0432 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0447\u0430\u0441\u0442\u0438.<\/p>\n<h3>\u0427\u0442\u043e \u0432 \u0438\u0442\u043e\u0433\u0435<\/h3>\n<p>\u0421\u044e\u0436\u0435\u0442 \u0447\u0430\u0441\u0442\u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0441\u044f \u0432 \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u0442\u0440\u043e\u043a\u0438. \u0421\u0442\u0435\u043a \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u043d\u0430\u0443\u0447\u0438\u043b\u0441\u044f \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0442\u044c (1.3), \u043f\u043e\u0445\u0443\u0434\u0435\u043b \u0434\u043e 2 \u041a\u0411 (1.4) \u0438 \u0441\u0442\u0430\u043b \u0441\u0436\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u043e\u043c \u043c\u0443\u0441\u043e\u0440\u0430; \u0432\u0441\u0435 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e Go \u0437\u043d\u0430\u0435\u0442, \u0433\u0434\u0435 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438. \u0412\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e \u043e\u0440\u0443\u0436\u0438\u0435: sysmon \u0441\u0442\u0440\u0435\u043b\u044f\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c SIGURG, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u043e\u0434\u0434\u0435\u043b\u044b\u0432\u0430\u0435\u0442 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438 \u0441 Go 1.14 \u043d\u0435\u0443\u0431\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0433\u043e\u0440\u0443\u0442\u0438\u043d \u043d\u0435\u0442. \u0413\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0440\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u0434\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430, \u0441\u043f\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u0441\u043c\u0435\u043d\u0443 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0438 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u0437 \u043f\u0443\u043b\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u043c\u0435\u0440\u0442\u0438. \u0418 \u043b\u044e\u0431\u0430\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0432 \u0442\u0432\u043e\u0435\u043c \u043a\u043e\u0434\u0435 (\u043a\u0430\u043d\u0430\u043b, \u043c\u044c\u044e\u0442\u0435\u043a\u0441, select) &#8212; \u044d\u0442\u043e \u0434\u0435\u0448\u0435\u0432\u044b\u0439 \u0441\u043e\u043d \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0442\u043e\u043a \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<p>\u0414\u0430\u043c\u043f \u043f\u0430\u043d\u0438\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0447\u0438\u0442\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442: \u043d\u043e\u043c\u0435\u0440 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b (\u0432\u044b\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u0447\u043a\u043e\u0439 \u043f\u043e 16), \u0441\u0442\u0430\u0442\u0443\u0441 \u0438\u043b\u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0432 \u0441\u043a\u043e\u0431\u043a\u0430\u0445, \u043c\u0438\u043d\u0443\u0442\u044b \u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u044f, <code>created by<\/code> \u0441 \u043c\u0435\u0441\u0442\u043e\u043c \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u043d\u044b\u0439 \u043d\u0430\u0432\u044b\u043a \u0438\u0437 \u0432\u0441\u0435\u0445, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0431\u044b\u043b\u0438.<\/p>\n<p>\u0417\u0430\u0433\u043b\u044f\u043d\u0435\u043c \u0432 \u0442\u0440\u0435\u0442\u044c\u044e \u0447\u0430\u0441\u0442\u044c. \u0413\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432, \u0438 sysmon \u043e\u0442\u0431\u0438\u0440\u0430\u0435\u0442 \u0443 \u0435\u0435 \u043f\u043e\u0442\u043e\u043a\u0430 \u043f\u0440\u0430\u0432\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c Go: \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e, \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0441\u043e\u043a\u0435\u0442 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u043e\u0442\u043e\u043a, \u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442? \u041f\u043e\u0447\u0435\u043c\u0443 \u0443 Go-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441 GOMAXPROCS=8 \u0432 htop \u0431\u044b\u0432\u0430\u0435\u0442 40 \u043f\u043e\u0442\u043e\u043a\u043e\u0432, \u0438 \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0441\u043a\u0430\u0436\u0435\u0442 \u00ab\u0445\u0432\u0430\u0442\u0438\u0442\u00bb? \u041a\u0430\u043a \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0438\u0449\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 (\u043f\u043e\u043b\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 <code>findRunnable<\/code> \u0441 \u043b\u0435\u0441\u0442\u043d\u0438\u0446\u0435\u0439 \u0438\u0437 \u0432\u043e\u0441\u044c\u043c\u0438 \u0448\u0430\u0433\u043e\u0432) \u0438 \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u043a\u0430\u0436\u0434\u043e\u0435 \u043f\u043e\u043b\u0435 \u0432 \u0432\u044b\u0432\u043e\u0434\u0435 <code>GODEBUG=schedtrace<\/code>? \u041f\u043b\u044e\u0441 \u0432\u0441\u0435 \u0441\u0432\u0435\u0436\u0435\u0435: GOMAXPROCS \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445, \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u0443\u0442\u0435\u0447\u0435\u043a \u0433\u043e\u0440\u0443\u0442\u0438\u043d \u0438 <code>testing\/synctest<\/code>. \u0424\u0438\u043d\u0430\u043b \u0441\u0435\u0440\u0438\u0438: \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0446\u0435\u043b\u0438\u043a\u043e\u043c.<\/p>\n<p>\u0412\u044b\u0439\u0434\u0435\u0442 \u043e\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0434\u0435\u043b\u044e. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0445\u043e\u0447\u0435\u0448\u044c \u043b\u043e\u0432\u0438\u0442\u044c \u0435\u0435 \u0432 \u043b\u0435\u043d\u0442\u0435 \u0425\u0430\u0431\u0440\u0430, \u0430\u043d\u043e\u043d\u0441 \u0431\u0443\u0434\u0435\u0442 \u0432 <a href=\"https:\/\/t.me\/bascodeCh\" rel=\"noopener noreferrer nofollow\">tg\u2019\u0448\u043a\u0435<\/a>: \u0442\u0443\u0434\u0430 \u0436\u0435 \u0443\u0435\u0445\u0430\u043b\u0438 \u0440\u0430\u0437\u0431\u043e\u0440\u044b \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u0441\u0435\u0440\u0438\u044e \u043d\u0435 \u0432\u043b\u0435\u0437\u043b\u0438.<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1073044\/\">https:\/\/habr.com\/ru\/articles\/1073044\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u042d\u0442\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0435\u0440\u0438\u0438 \u043f\u0440\u043e \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0438 \u0440\u0430\u043d\u0442\u0430\u0439\u043c Go. \u0412 \u043d\u0435\u0439 \u0442\u0440\u0438 \u0441\u044e\u0436\u0435\u0442\u0430: \u0441\u0442\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0435\u0442 \u043f\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u0430\u043a \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0442; \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b; \u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u0441\u043b\u043e\u0432\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u0430\u043c\u043f\u0430 \u043f\u0430\u043d\u0438\u043a\u0438. \u041f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430, \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u0442\u043e\u043a\u0438 \u041e\u0421 \u0434\u043e\u0440\u043e\u0433\u0438\u0435 \u0438 \u043a\u0430\u043a Go \u0434\u043e\u0448\u0435\u043b \u0434\u043e \u0441\u0445\u0435\u043c\u044b GMP: \u043e\u043d\u0430 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430, \u043d\u043e \u0442\u0430\u043c \u0437\u0430\u0432\u044f\u0437\u043a\u0430 \u0432\u0441\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438.\u041f\u043b\u0430\u043d \u0441\u0435\u0440\u0438\u0438:\u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u0442\u043e\u043a\u0438 \u041e\u0421 \u043d\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u043a\u0430\u043a Go \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b GMP\u041f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u044e\u0449\u0438\u0439 \u0441\u0442\u0435\u043a, \u0441\u0438\u0433\u043d\u0430\u043b SIGURG \u0438 \u0436\u0438\u0437\u043d\u044c \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b.syscall, netpoll, \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u0440\u0443\u0433 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0438 \u0441\u0432\u0435\u0436\u0438\u0439 Go \u0421\u043a\u043e\u0440\u043e\u2026\u041a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u043f\u0435\u0440\u0435\u0441\u043a\u0430\u0437 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043f\u0440\u0438\u0448\u0435\u043b \u0441\u0440\u0430\u0437\u0443 \u0441\u044e\u0434\u0430. \u0413\u043e\u0440\u0443\u0442\u0438\u043d\u0430: \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 g \u043f\u043b\u044e\u0441 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0441\u0442\u0435\u043a \u0432 \u043a\u0443\u0447\u0435 Go, \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0435\u0435 \u043f\u043e\u0442\u043e\u043a \u041e\u0421 (M), \u0430 \u043f\u0440\u0430\u0432\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c Go-\u043a\u043e\u0434 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f P, \u0438 \u0438\u0445 \u0440\u043e\u0432\u043d\u043e GOMAXPROCS. \u0412 Go 1.2 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0442\u044c \u0445\u0430\u043a\u043e\u043c: \u0432 \u043f\u043e\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0442\u0435\u043a\u0430 \u043f\u0438\u0448\u0443\u0442 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0436\u0435 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0443\u0432\u043e\u0434\u0438\u0442 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a. \u0414\u044b\u0440\u0430 \u0445\u0430\u043a\u0430: \u0446\u0438\u043a\u043b \u0431\u0435\u0437 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043d\u0435\u0443\u0431\u0438\u0432\u0430\u0435\u043c. \u041d\u0430 \u044d\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043c\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c.TL;DR \u0434\u043b\u044f \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u044e\u0449\u0438\u0445: \u0441\u0442\u0435\u043a\u0438 Go \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0438\u0441\u044c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u0431\u043e\u043b\u0435\u043b\u0438 \u00ab\u0433\u043e\u0440\u044f\u0447\u0438\u043c \u0440\u0430\u0441\u0449\u0435\u043f\u043b\u0435\u043d\u0438\u0435\u043c\u00bb (hot split), \u0432 1.3 \u0438\u0445 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0446\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0438 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c\u044b\u043c\u0438, \u0432 1.4 \u0443\u0436\u0430\u043b\u0438 \u0434\u043e 2 \u041a\u0411. \u0421\u0442\u0435\u043a \u0440\u0430\u0441\u0442\u0435\u0442 \u0443\u0434\u0432\u043e\u0435\u043d\u0438\u0435\u043c \u0434\u043e \u043f\u043e\u0442\u043e\u043b\u043a\u0430 \u0432 1 \u0413\u0411, \u0430 \u0441\u0436\u0438\u043c\u0430\u0435\u0442 \u0435\u0433\u043e \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043c\u0443\u0441\u043e\u0440\u0430. \u0421 1.14 \u0446\u0438\u043a\u043b \u0431\u0435\u0437 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0432\u0435\u0447\u0435\u043d: \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0441\u0442\u0440\u0435\u043b\u044f\u0435\u0442 \u0432 \u043f\u043e\u0442\u043e\u043a \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c SIGURG \u0438 \u043f\u043e\u0434\u0434\u0435\u043b\u044b\u0432\u0430\u0435\u0442 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0413\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0440\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 newproc, \u0441\u043f\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 gopark, \u0443\u043c\u0438\u0440\u0430\u0435\u0442 \u0432 goexit \u0438 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u0437 \u043f\u0443\u043b\u0430: \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043d\u0430 \u043a\u0430\u043d\u0430\u043b\u0435 \u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0438 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u0442 \u043f\u043e\u0442\u043e\u043a.\u041c\u0430\u0440\u0448\u0440\u0443\u0442 \u0447\u0430\u0441\u0442\u0438: 2014-2020 \u043d\u0430 \u043e\u0431\u0449\u0435\u0439 \u043b\u0435\u043d\u0442\u0435 \u0441\u0435\u0440\u0438\u0438\u0412\u0441\u0435 \u0437\u0430\u043c\u0435\u0440\u044b, \u043a\u0430\u043a \u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438, \u0441\u043d\u044f\u0442\u044b \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435: Intel Core i9-14900KF (24 \u044f\u0434\u0440\u0430, 32 \u043f\u043e\u0442\u043e\u043a\u0430), Linux, Go 1.27.0. \u041a\u043e\u0434 \u0434\u0435\u043c\u043e \u043b\u0435\u0436\u0438\u0442 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 dsbasko\/sandbox-gorutines: \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0442\u0430\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0434\u0435\u043c\u043e \u0432 \u0442\u0435\u043a\u0441\u0442\u0435. \u0426\u0438\u0442\u0430\u0442\u044b \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432 \u0434\u0430\u044e \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0440\u044f\u0434\u043e\u043c. \u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u043e\u0438\u0442 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0444\u0430\u0439\u043b \u0438 \u0441\u0442\u0440\u043e\u043a\u0443, \u0438 \u0432\u0435\u0434\u0435\u0442 \u043e\u043d\u0430 \u043d\u0430 \u0442\u0435\u0433 go1.27.0, \u0430 \u043d\u0435 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0432\u0435\u0442\u043a\u0443. \u0412\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u0433\u0430 \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u043e\u043a \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b.Go 1.3-1.5: \u0441\u0442\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u0435\u0442 \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0442\u044c\u041f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c \u0444\u0430\u043a\u0442\u043e\u043c: \u0432 Go 1.2 \u0441\u0442\u0435\u043a \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0432\u044b\u0440\u043e\u0441 \u0441 4 \u0434\u043e 8 \u041a\u0411, \u0445\u043e\u0442\u044f \u043e\u0431\u0435\u0449\u0430\u043b\u0438 \u0434\u0435\u0448\u0435\u0432\u0438\u0437\u043d\u0443. \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043e\u0442 \u0447\u0435\u0433\u043e \u044d\u0442\u0438\u043c \u0440\u043e\u0441\u0442\u043e\u043c \u043e\u0442\u043a\u0443\u043f\u0430\u043b\u0438\u0441\u044c.\u0414\u043e Go 1.3 \u0441\u0442\u0435\u043a \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u043d\u0435 \u0431\u044b\u043b \u0446\u0435\u043b\u044c\u043d\u044b\u043c \u043a\u0443\u0441\u043a\u043e\u043c \u043f\u0430\u043c\u044f\u0442\u0438. \u041e\u043d \u0431\u044b\u043b \u0446\u0435\u043f\u043e\u0447\u043a\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432: \u043a\u043e\u0433\u0434\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u043c\u0435\u0441\u0442\u0430, \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0432\u044b\u0434\u0435\u043b\u044f\u043b \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442, \u0430 \u0432 \u0435\u0433\u043e \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0439 \u0448\u0430\u043f\u043a\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0439. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0430\u0441\u044c, \u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0442\u0443\u0442 \u0436\u0435 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u043b\u0441\u044f, \u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u043f\u0440\u0435\u0436\u043d\u0438\u0439 \u043a\u0443\u0441\u043e\u043a. \u0417\u0432\u0443\u0447\u0438\u0442 \u044d\u043a\u043e\u043d\u043e\u043c\u043d\u043e: \u0441\u0442\u0435\u043a \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441.\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043c\u043e\u0442\u0440\u0438, \u0433\u0434\u0435 \u044d\u0442\u0430 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u044f \u0432\u0437\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c \u0446\u0438\u043a\u043b \u043d\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0438 \u0432\u044b\u0437\u043e\u0432 \u044d\u0442\u043e\u0442 \u043f\u0440\u0438\u0448\u0435\u043b\u0441\u044f \u0440\u043e\u0432\u043d\u043e \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430. \u041a\u0430\u0436\u0434\u0430\u044f \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f: \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u0435\u0433\u043c\u0435\u043d\u0442, \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438\u0437 \u0442\u0440\u0435\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439, \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f, \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u0441\u0435\u0433\u043c\u0435\u043d\u0442. \u041c\u0438\u043b\u043b\u0438\u043e\u043d \u043f\u0430\u0440 \u00ab\u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c\u00bb \u043d\u0430 \u043f\u0443\u0441\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435. \u042d\u0442\u0443 \u0431\u043e\u043b\u0435\u0437\u043d\u044c \u043d\u0430\u0437\u0432\u0430\u043b\u0438 hot split, \u0433\u043e\u0440\u044f\u0447\u0435\u0435 \u0440\u0430\u0441\u0449\u0435\u043f\u043b\u0435\u043d\u0438\u0435.\u0417\u043b\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0442\u043e, \u0447\u0442\u043e \u0431\u043e\u043b\u0435\u0437\u043d\u044c \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0430. \u041a\u043e\u0434 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0435\u043d, \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435, \u0430 \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u043e\u0434\u043d\u043e\u0439 \u0431\u0435\u0437\u043e\u0431\u0438\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u0441\u0434\u0432\u0438\u0433\u0430\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430, \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u0432\u0434\u0432\u043e\u0435 \u0438\u043b\u0438 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0442\u0440\u043e\u0435. \u0420\u043e\u0441\u0442 \u0441\u0442\u0435\u043a\u0430 \u0434\u043e 8 \u041a\u0411 \u0432 Go 1.2 (\u0442\u0430 \u0441\u0430\u043c\u0430\u044f \u00abreasonable stopgap\u00bb, \u0440\u0430\u0437\u0443\u043c\u043d\u0430\u044f \u0437\u0430\u0442\u044b\u0447\u043a\u0430) \u0441\u043d\u0438\u0436\u0430\u043b \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0443, \u043d\u043e \u043d\u0435 \u0443\u0431\u0438\u0440\u0430\u043b \u0435\u0435.Hot split: \u0446\u0438\u043a\u043b \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430Go 1.3 \u0432 \u0438\u044e\u043d\u0435 2014 \u0433\u043e\u0434\u0430 \u0443\u0431\u0440\u0430\u043b \u043f\u0440\u0438\u0447\u0438\u043d\u0443. \u0418\u0437 release notes:Go 1.3 has changed the implementation of goroutine stacks away from the old, \u201csegmented\u201d model to a contiguous model. When a goroutine needs more stack than is available, its stack is transferred to a larger single block of memory.\u0421\u0442\u0435\u043a \u0441\u0442\u0430\u043b \u043e\u0434\u043d\u0438\u043c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u043c \u0431\u043b\u043e\u043a\u043e\u043c, \u0430 \u043f\u0440\u0438 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0435 \u043c\u0435\u0441\u0442\u0430 \u043e\u043d \u043d\u0435 \u043f\u0440\u0438\u0448\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0433\u043c\u0435\u043d\u0442, \u0430 \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0435\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0432 \u0431\u043b\u043e\u043a \u043f\u043e\u0431\u043e\u043b\u044c\u0448\u0435. \u0413\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0442, \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0435\u0442 \u0438 hot split. \u0422\u0435\u043c \u0436\u0435 \u0440\u0435\u043b\u0438\u0437\u043e\u043c, \u043a \u0441\u043b\u043e\u0432\u0443, \u0437\u0430\u043a\u0440\u044b\u043b\u0441\u044f \u0434\u043e\u043b\u0433 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438: \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c P \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u0430 \u0436\u0438\u0442\u044c \u043f\u043e\u0434 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u043c \u043c\u044c\u044e\u0442\u0435\u043a\u0441\u043e\u043c \u0438 \u0441\u0442\u0430\u043b\u0430 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c lock-free \u043a\u043e\u043b\u044c\u0446\u043e\u043c \u043d\u0430 256 \u0441\u043b\u043e\u0442\u043e\u0432, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043b\u044e\u0431\u044f\u0442 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u0445.\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u00ab\u043f\u0435\u0440\u0435\u0435\u0437\u0434\u00bb \u0441\u0442\u0435\u043a\u0430. \u0422\u0443\u0442 \u0434\u0432\u0430 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430, \u0438 \u043e\u0431\u0430 \u0441\u0442\u043e\u044f\u0442 \u0440\u0430\u0437\u0431\u043e\u0440\u0430.\u0414\u0432\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0443\u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u0442\u0435\u043a\u0430 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442. \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u044f \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u043f\u0440\u043e\u043b\u043e\u0433: \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443. \u0412\u043e\u0442 \u043e\u043d\u0430 \u0432\u0441\u044f, \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 (stack.go:24):Each function compares its stack pointer against g-&gt;stackguard to check for overflow.\u041a\u0430\u0436\u0434\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0442\u0435\u043a\u0430 \u0441 \u043f\u043e\u043b\u0435\u043c stackguard0 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b (\u043a\u0440\u0430\u0441\u043d\u043e\u0439 \u0447\u0435\u0440\u0442\u043e\u0439 \u0447\u0443\u0442\u044c \u0432\u044b\u0448\u0435 \u0434\u043d\u0430 \u0441\u0442\u0435\u043a\u0430). \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0438\u0436\u0435 \u0447\u0435\u0440\u0442\u044b: \u043c\u0435\u0441\u0442\u0430 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442, \u043f\u0440\u044b\u0433\u0430\u0435\u043c \u0432 morestack. \u0422\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u0441\u0442\u0435\u043a \u043f\u043e\u0442\u043e\u043a\u0430 \u0438 \u0437\u043e\u0432\u0435\u0442 newstack(), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0431\u043b\u043e\u043a.\u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0440\u0430\u0441\u0442\u0438? \u0412\u0434\u0432\u043e\u0435 (stack.go:1177):\/\/ src\/runtime\/stack.go:1177 (Go 1.27), \u0444\u0443\u043d\u043a\u0446\u0438\u044f newstack\/\/ Allocate a bigger segment and move the stack.oldsize := gp.stack.hi &#8212; gp.stack.lonewsize := oldsize * 2\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043d\u0430\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442 \u0432\u044b\u0431\u043e\u0440 (stack.go:1045): \u00abStack growth is multiplicative, for constant amortized cost\u00bb (\u0440\u043e\u0441\u0442 \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0438\u043a\u0430\u0442\u0438\u0432\u043d\u044b\u0439, \u0440\u0430\u0434\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u0430\u043c\u043e\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0446\u0435\u043d\u044b). \u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0435\u0440\u0435\u0435\u0437\u0434 \u0432\u0434\u0432\u043e\u0435 \u0434\u043e\u0440\u043e\u0436\u0435, \u043d\u043e \u0441\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u0434\u0432\u043e\u0435 \u0440\u0435\u0436\u0435, \u0438 \u0441\u0440\u0435\u0434\u043d\u044f\u044f \u0446\u0435\u043d\u0430 \u0431\u0430\u0439\u0442\u0430 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043e\u0439. \u0421\u043e \u0441\u043b\u0430\u0439\u0441\u0430\u043c\u0438 \u0437\u0430\u043a\u043e\u043d \u043f\u043e\u0445\u043e\u0436, \u043d\u043e \u043d\u0435 \u0442\u043e\u0442 \u0436\u0435: append \u0443\u0434\u0432\u0430\u0438\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u0441\u043b\u0430\u0439\u0441\u044b (\u0434\u043e 256 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432), \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044c. \u0421\u0442\u0435\u043a \u0443\u0434\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430, \u0431\u0435\u0437 \u043f\u043e\u0440\u043e\u0433\u043e\u0432.\u0412\u043e\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435: \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c \u043f\u0435\u0440\u0435\u0435\u0437\u0434, \u0438 \u0437\u0434\u0435\u0441\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438. \u0421\u0442\u0435\u043a \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432 \u0434\u0440\u0443\u0433\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u043f\u0430\u043c\u044f\u0442\u0438. \u0412 \u0441\u0442\u0435\u043a\u0435 \u043b\u0435\u0436\u0430\u043b\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f x, \u0430 \u0433\u0434\u0435-\u0442\u043e \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0436\u0438\u0432\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c &amp;x. \u041e\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0439 \u0430\u0434\u0440\u0435\u0441, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0442. \u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0435 \u043f\u0430\u0434\u0430\u0435\u0442?\u041e\u0442\u0432\u0435\u0442: \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0447\u0438\u043d\u0438\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438. \u0420\u0443\u043a\u0430\u043c\u0438. \u0424\u0443\u043d\u043a\u0446\u0438\u044f copystack (stack.go:929) \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0434\u043d\u0438\u043c memmove, \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0434\u0435\u043b\u044c\u0442\u0443 \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0430\u0440\u044b\u043c \u0438 \u043d\u043e\u0432\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u0430 \u043f\u043e\u0442\u043e\u043c \u043e\u0431\u0445\u043e\u0434\u0438\u0442 \u0441\u0442\u0435\u043a \u043a\u0430\u0434\u0440 \u0437\u0430 \u043a\u0430\u0434\u0440\u043e\u043c \u0438 \u043f\u0440\u0430\u0432\u0438\u0442 \u0432\u0441\u0435, \u0447\u0442\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u043e \u0432\u043d\u0443\u0442\u0440\u044c \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 (stack.go:608):adjustpointer checks whether vpp is in the old stack described by adjinfo. If so, it rewrites vpp to point into the new stack.\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e: \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430. \u041f\u043e\u043f\u0430\u043b\u043e? \u041f\u043b\u044e\u0441 \u0434\u0435\u043b\u044c\u0442\u0430. \u041f\u0440\u0430\u0432\u044f\u0442\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u0430\u0434\u0440\u043e\u0432, \u0446\u0435\u043f\u043e\u0447\u043a\u0438 defer \u0438 panic, \u0437\u0430\u043f\u0438\u0441\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0447\u0438\u0441\u043b\u0438\u0442\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044f\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432.\u041f\u043e\u0442\u0440\u043e\u0433\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0435\u0437\u0434 \u0440\u0443\u043a\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043c\u043e stack_move. \u041e\u043d\u043e \u0431\u0435\u0440\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u0443\u0432\u043e\u0434\u0438\u0442 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u043d\u0430 20 000 \u043a\u0430\u0434\u0440\u043e\u0432 \u0432\u0433\u043b\u0443\u0431\u044c \u0438 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u0441\u043d\u043e\u0432\u0430. \u0410\u0434\u0440\u0435\u0441\u0430 \u0440\u0430\u0437\u043d\u044b\u0435, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0436\u043d\u0435\u0435.\u041e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441, \u043e\u0442\u043a\u0443\u0434\u0430 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u0437\u043d\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0441\u043b\u043e\u0432\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438, \u0430 \u043a\u0430\u043a\u0438\u0435 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430. \u041e\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430: \u0442\u043e\u0442 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u0438\u0442\u043e\u0432\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u00ab\u0437\u0434\u0435\u0441\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442\u00bb. \u042d\u0442\u0438 \u043a\u0430\u0440\u0442\u044b \u0438 \u0442\u0430\u043a \u043d\u0443\u0436\u043d\u044b \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0443 \u043c\u0443\u0441\u043e\u0440\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0435\u0437\u0434 \u0441\u0442\u0435\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0438\u0445 \u0434\u0430\u0440\u043e\u043c.\u041f\u0435\u0440\u0435\u0435\u0437\u0434 \u0441\u0442\u0435\u043a\u0430: \u043a\u043e\u043f\u0438\u044f \u043f\u043b\u044e\u0441 \u043f\u043e\u0447\u0438\u043d\u043a\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439\u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0440\u0430\u0441\u0442\u0435\u0442 \u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0433\u0440\u0430\u0431\u043b\u044f \u0441 uintptr. \u0414\u043b\u044f \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 uintptr \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u0430 \u0447\u0438\u0441\u043b\u043e, \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f unsafe \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c (unsafe.go:60):Even if a uintptr holds the address of some object, the garbage collector will not update that uintptr\u2019s value if the object moves.\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043b \u0430\u0434\u0440\u0435\u0441 \u0441\u0442\u0435\u043a\u043e\u0432\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432 uintptr, \u0441\u0442\u0435\u043a \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u043b, \u0447\u0438\u0441\u043b\u043e \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0441\u0442\u0430\u0440\u044b\u043c. \u0422\u0435\u043f\u0435\u0440\u044c \u0442\u044b \u0437\u043d\u0430\u0435\u0448\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0437\u0430 \u0442\u0430\u043a\u043e\u0435 \u0431\u044c\u044e\u0442 \u043d\u0430 \u043a\u043e\u0434-\u0440\u0435\u0432\u044c\u044e.\u0421\u0442\u0435\u043a \u0443\u043c\u0435\u0435\u0442 \u0438 \u0445\u0443\u0434\u0435\u0442\u044c\u0420\u043e\u0441\u0442 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438. \u0415\u0441\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f. \u0413\u043e\u0440\u0443\u0442\u0438\u043d\u0430-\u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0442\u0435\u043b\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u043b\u0430 \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 JSON, \u0441\u0442\u0435\u043a \u0432\u044b\u0440\u043e\u0441 \u0434\u043e \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u0430, \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u044f \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c, \u0438 \u0431\u0435\u0437 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u044d\u0442\u043e\u0442 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0431\u044b \u0437\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u043e\u0439 \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430.\u0421\u0436\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0435\u043a\u0438 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043c\u0443\u0441\u043e\u0440\u0430, \u0438 \u0432\u044b\u0431\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u043d: GC \u0438 \u0442\u0430\u043a \u043e\u0431\u0445\u043e\u0434\u0438\u0442 \u0441\u0442\u0435\u043a \u043a\u0430\u0436\u0434\u043e\u0439 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0432 \u043f\u043e\u0438\u0441\u043a\u0430\u0445 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439, \u043a\u0430\u0440\u0442\u044b \u0443 \u043d\u0435\u0433\u043e \u0432 \u0440\u0443\u043a\u0430\u0445. \u041f\u0440\u0430\u0432\u0438\u043b\u043e \u043a\u043e\u043d\u0441\u0435\u0440\u0432\u0430\u0442\u0438\u0432\u043d\u043e\u0435: \u0435\u0441\u043b\u0438 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u0442\u0435\u043a\u0430, \u0441\u0442\u0435\u043a \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u0432\u0434\u0432\u043e\u0435 (\u0442\u0435\u043c \u0436\u0435 copystack, \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043c\u0435\u043d\u044c\u0448\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443). \u0414\u0435\u043c\u043e stack_shrink: \u0434\u0432\u0435 \u0442\u044b\u0441\u044f\u0447\u0438 \u0433\u043e\u0440\u0443\u0442\u0438\u043d \u0440\u0430\u0437\u0434\u0443\u0432\u0430\u044e\u0442 \u0441\u0442\u0435\u043a\u0438 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0435\u0439 \u0434\u043e 33 \u041a\u0411 \u0438 \u0437\u0430\u0441\u044b\u043f\u0430\u044e\u0442 \u043d\u0430 \u043c\u0435\u043b\u043a\u043e\u0439 \u0433\u043b\u0443\u0431\u0438\u043d\u0435.\u0433\u043b\u0443\u0431\u0438\u043d\u0430 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430, \u0441\u0442\u0435\u043a \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0439: 33685 \u0431\u0430\u0439\u0442 \u043d\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443\u043f\u043e\u0441\u043b\u0435 1-\u0433\u043e GC:  17137 \u0431\u0430\u0439\u0442 \u043d\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443\u043f\u043e\u0441\u043b\u0435 2-\u0433\u043e GC:  9322 \u0431\u0430\u0439\u0442 \u043d\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443\u043f\u043e\u0441\u043b\u0435 4-\u0433\u043e GC:  5275 \u0431\u0430\u0439\u0442 \u043d\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443\u041a\u0430\u0436\u0434\u044b\u0439 \u0446\u0438\u043a\u043b GC \u0441\u0440\u0435\u0437\u0430\u0435\u0442 \u043b\u0438\u0448\u043d\u0435\u0435 \u0432\u0434\u0432\u043e\u0435, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0443\u043f\u0440\u0435\u0442\u0441\u044f \u0432 \u043c\u0438\u043d\u0438\u043c\u0443\u043c. \u0410 \u0441 \u0444\u043b\u0430\u0433\u043e\u043c GODEBUG=gcshrinkstackoff=1 \u0442\u0430 \u0436\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0442\u0430\u043a \u0438 \u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0432\u043e\u0438 33 \u041a\u0411 \u043d\u0430 \u0433\u043e\u0440\u0443\u0442\u0438\u043d\u0443 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0436\u0438\u0437\u043d\u0438.\u041f\u043e\u0442\u043e\u043b\u043e\u043a: \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0432\u0438\u0434\u0435\u043b\u0420\u0430\u0441\u0442\u0438 \u0432\u0435\u0447\u043d\u043e \u0441\u0442\u0435\u043a \u043d\u0435 \u043c\u043e\u0436\u0435\u0442. \u041b\u0438\u043c\u0438\u0442 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0438 \u0432 \u0435\u0433\u043e \u0432\u044b\u0431\u043e\u0440\u0435 \u0435\u0441\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u044c, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u043b\u044e\u0431\u043b\u044e \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 Go (proc.go:160):\/\/ src\/runtime\/proc.go:160 (Go 1.27), runtime.main\/\/ Max stack size is 1 GB on 64-bit, 250 MB on 32-bit.\/\/ Using decimal instead of binary GB and MB because\/\/ they look nicer in the stack overflow failure message.if goarch.PtrSize == 8 {maxstacksize = 1000000000}\u041b\u0438\u043c\u0438\u0442 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u044b\u0439, \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434 \u0431\u0430\u0439\u0442, \u0430 \u043d\u0435 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u00ab\u0442\u0430\u043a \u043a\u0440\u0430\u0441\u0438\u0432\u0435\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435\u00bb. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435. \u0414\u0435\u043c\u043e stack_overflow: \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u044f \u0431\u0435\u0437 \u0434\u043d\u0430, \u0430 \u0432 main \u0441\u0442\u043e\u0438\u0442 defer \u0441 recover(), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u043a\u043e\u0431\u044b \u0432\u0441\u0435 \u043f\u043e\u0439\u043c\u0430\u0435\u0442:\/\/ stack_overflow\/main.go (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442)func down(n int) int {return down(n+1) + n \/\/ \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u044f \u0431\u0435\u0437 \u0434\u043d\u0430}runtime: goroutine stack exceeds 1000000000-byte limitruntime: sp=0x1e430ee60398 stack=[0x1e430ee60000, 0x1e432ee60000]fatal error: stack overflowruntime stack:runtime.throw({0x49b82a?, 0x200000001?})&#8230;\u0412\u0441\u0435\u0433\u043e \u0432\u044b\u0432\u043e\u0434 \u0437\u0430\u043d\u044f\u043b 278 \u0441\u0442\u0440\u043e\u043a, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0436\u0435\u043c\u0447\u0443\u0436\u0438\u043d\u0443 &#8230;44739039 frames elided&#8230;: \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0447\u0435\u0441\u0442\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0438\u043b, \u0447\u0442\u043e \u0441\u0432\u0435\u0440\u043d\u0443\u043b 44 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u043a\u0430\u0434\u0440\u043e\u0432 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438. \u041e\u0431\u0440\u0430\u0442\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0440\u0438 \u0432\u0435\u0449\u0438. \u041f\u0435\u0440\u0432\u0430\u044f: \u044d\u0442\u043e fatal error, \u0430 \u043d\u0435 panic, \u0438 \u043c\u043e\u0439 recover() \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0441\u044f, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0443\u043c\u0435\u0440\u043b\u0430 \u0441\u0440\u0430\u0437\u0443. \u0412\u0442\u043e\u0440\u0430\u044f: \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0432\u0438\u0434\u043d\u044b runtime.morestack \u0438 runtime.newstack, \u0442\u0435 \u0441\u0430\u043c\u044b\u0435 \u0433\u0435\u0440\u043e\u0438 \u044d\u0442\u043e\u0439 \u0433\u043b\u0430\u0432\u044b, \u043f\u043e\u0439\u043c\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b.\u0422\u0440\u0435\u0442\u044c\u044f, \u0441\u0430\u043c\u0430\u044f \u0442\u043e\u043d\u043a\u0430\u044f: \u0441\u0442\u0435\u043a \u0432 \u0434\u0430\u043c\u043f\u0435 (stack=[&#8230;]) \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 512 \u041c\u0411, \u0430 \u043d\u0435 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442. \u0414\u043e \u043b\u0438\u043c\u0438\u0442\u0430 \u0441\u0442\u0435\u043a \u043d\u0435 \u0434\u043e\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u043d\u0438\u043a\u043e\u0433\u0434\u0430: \u0443\u043c\u0438\u0440\u0430\u0435\u0442 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0443\u0434\u0432\u043e\u0438\u0442\u044c 512 \u041c\u0411, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e 1 073 741 824 \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u0430.1.4 \u0438 1.5: \u0436\u0430\u0442\u0432\u0430\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0441\u0442\u0435\u043a\u0438 \u043e\u0442\u043a\u0440\u044b\u043b\u0438 \u0434\u043e\u0440\u043e\u0433\u0443 \u0432\u043d\u0438\u0437. \u0420\u0430\u0437 \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u0440\u0438\u0433\u043e\u0432\u043e\u0440 (\u043d\u0435 \u0443\u0433\u0430\u0434\u0430\u043b\u0438, \u0441\u0442\u0435\u043a \u043f\u0435\u0440\u0435\u0435\u0434\u0435\u0442), \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439. \u0412&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-491753","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/491753","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=491753"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/491753\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=491753"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=491753"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=491753"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}