{"id":27049,"date":"2023-06-15T11:58:31","date_gmt":"2023-06-15T08:28:31","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/go-how-to-write-a-worker-pool-1h3b\/"},"modified":"2023-06-15T11:58:31","modified_gmt":"2023-06-15T08:28:31","slug":"go-how-to-write-a-worker-pool-1h3b","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/go-how-to-write-a-worker-pool-1h3b\/","title":{"rendered":"GO: \u0686\u06af\u0648\u0646\u0647 \u06cc\u06a9 \u0627\u0633\u062a\u062e\u0631 \u06a9\u0627\u0631\u06af\u0631 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645"},"content":{"rendered":"<div data-article-id=\"1505279\" id=\"article-body\">\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/go-how-to-write-a-worker-pool-1h3b\/#%D9%85%D8%B9%D8%B1%D9%81%DB%8C\" >\u0645\u0639\u0631\u0641\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/go-how-to-write-a-worker-pool-1h3b\/#%DA%86%DA%AF%D9%88%D9%86%D9%87_%DB%8C%DA%A9_%D8%A7%D8%B3%D8%AA%D8%AE%D8%B1_%DA%A9%D8%A7%D8%B1%DA%AF%D8%B1_%D8%A8%D9%86%D9%88%DB%8C%D8%B3%DB%8C%D9%85%D8%9F\" >\u0686\u06af\u0648\u0646\u0647 \u06cc\u06a9 \u0627\u0633\u062a\u062e\u0631 \u06a9\u0627\u0631\u06af\u0631 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645\u061f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/go-how-to-write-a-worker-pool-1h3b\/#%D8%AA%D8%AC%D8%B2%DB%8C%D9%87_%D9%88_%D8%AA%D8%AD%D9%84%DB%8C%D9%84_%DA%A9%D8%AF\" >\u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u06a9\u062f<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/go-how-to-write-a-worker-pool-1h3b\/#%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1_%D8%A7%D8%B5%D9%84%DB%8C_WorkerPool\" >\u0633\u0627\u062e\u062a\u0627\u0631 \u0627\u0635\u0644\u06cc WorkerPool<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/go-how-to-write-a-worker-pool-1h3b\/#%D8%AC%D8%AF%DB%8C%D8%AF\" >\u062c\u062f\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/go-how-to-write-a-worker-pool-1h3b\/#%D8%A7%D8%B1%D8%B3%D8%A7%D9%84\" >\u0627\u0631\u0633\u0627\u0644<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/go-how-to-write-a-worker-pool-1h3b\/#%D8%A7%D8%B1%D8%B3%D8%A7%D9%84_%D8%B5%D8%A8%D8%B1_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0627\u0631\u0633\u0627\u0644 \u0635\u0628\u0631 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/go-how-to-write-a-worker-pool-1h3b\/#%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-2\" >\u0627\u0631\u0633\u0627\u0644<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/go-how-to-write-a-worker-pool-1h3b\/#%DA%A9%D8%A7%D8%B1%DA%AF%D8%B1\" >\u06a9\u0627\u0631\u06af\u0631<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/go-how-to-write-a-worker-pool-1h3b\/#%D8%AA%D9%88%D8%B3%D8%B7_%D8%AE%D9%88%D8%AF%D9%85_%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%B4%D8%AF%D9%87_%D8%A7%D8%B3%D8%AA\" >\u062a\u0648\u0633\u0637 \u062e\u0648\u062f\u0645 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/go-how-to-write-a-worker-pool-1h3b\/#%D8%B4%D9%85%D8%A7%D8%B1%D9%87_%DA%A9%D8%A7%D8%B1%DA%AF%D8%B1\" >\u0634\u0645\u0627\u0631\u0647 \u06a9\u0627\u0631\u06af\u0631<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/go-how-to-write-a-worker-pool-1h3b\/#%D8%A7%D9%84%DA%AF%D9%88%DB%8C_%DA%AF%D8%B2%DB%8C%D9%86%D9%87_%D9%87%D8%A7%DB%8C_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C\" >\u0627\u0644\u06af\u0648\u06cc \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/go-how-to-write-a-worker-pool-1h3b\/#%D9%88%D8%B6%D8%B9%DB%8C%D8%AA\" >\u0648\u0636\u0639\u06cc\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/go-how-to-write-a-worker-pool-1h3b\/#%D9%85%D8%B4%DA%A9%D9%84_%D9%85%D9%88%D8%A7%D8%AC%D9%87_%D8%B4%D8%AF\" >\u0645\u0634\u06a9\u0644 \u0645\u0648\u0627\u062c\u0647 \u0634\u062f<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/go-how-to-write-a-worker-pool-1h3b\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87\" >\u0646\u062a\u06cc\u062c\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/go-how-to-write-a-worker-pool-1h3b\/#%D9%81%D9%87%D8%B1%D8%B3%D8%AA_%D9%85%D8%B1%D8%AC%D8%B9\" >\u0641\u0647\u0631\u0633\u062a \u0645\u0631\u062c\u0639<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B9%D8%B1%D9%81%DB%8C\"><\/span>\n<p>  \u0645\u0639\u0631\u0641\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u062f\u063a\u0627\u0645 \u06cc\u06a9 \u062a\u06a9\u0646\u06cc\u06a9 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u0646\u0627\u0628\u0639 \u0627\u0633\u062a \u06a9\u0647 \u0634\u0627\u0645\u0644 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0627\u06cc \u0627\u0632 \u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc \u0645\u0646\u0627\u0628\u0639 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0627\u0633\u062a \u06a9\u0647 \u0627\u0645\u06a9\u0627\u0646 \u062a\u062e\u0635\u06cc\u0635 \u0648 \u062a\u062e\u0635\u06cc\u0635 \u0633\u0631\u06cc\u0639 \u0627\u06cc\u0646 \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f.  \u06af\u0648\u0631\u0648\u062a\u06cc\u0646 \u0647\u0627 \u062f\u0631 \u0632\u0628\u0627\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc Go\u060c &#8220;\u0631\u0634\u062a\u0647 \u0647\u0627\u06cc&#8221; \u0633\u0628\u06a9 \u0648\u0632\u0646 \u0647\u0633\u062a\u0646\u062f\u060c \u0627\u0645\u0627 \u062a\u0639\u062f\u0627\u062f \u0632\u06cc\u0627\u062f\u06cc \u0627\u0632 \u06af\u0648\u0631\u0648\u062a\u06cc\u0646 \u0647\u0627 \u0647\u0645\u0686\u0646\u0627\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0645\u0646\u0627\u0628\u0639 \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647\u06cc \u0631\u0627 \u0645\u0635\u0631\u0641 \u06a9\u0646\u0646\u062f.  \u06cc\u06a9 Worker Pool\u060c \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062a\u06a9\u0646\u06cc\u06a9\u200c\u0647\u0627\u06cc \u0627\u062f\u063a\u0627\u0645\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062a\u0639\u062f\u0627\u062f \u0645\u0639\u06cc\u0646\u06cc \u0627\u0632 \u06af\u0648\u0631\u0648\u062a\u06cc\u0646\u200c\u0647\u0627 \u0631\u0627 \u062d\u0641\u0638 \u06a9\u0646\u062f \u0648 \u0641\u0642\u0637 \u0628\u0647 \u0622\u0646\u0647\u0627 \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u062f \u0648\u0638\u0627\u06cc\u0641 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u0646\u062f \u0648 \u0627\u062a\u0644\u0627\u0641 \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u06a9\u0627\u0647\u0634 \u062f\u0647\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u06cc\u06a9 \u0631\u0648\u06cc\u06a9\u0631\u062f \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc Worker Pool \u0645\u0639\u0631\u0641\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u06a9\u062f \u0645\u0646\u0628\u0639 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0645\u062d\u0628\u0648\u0628 Worker Pool\u060c gammazero\/workerpool \u0631\u0627 \u062a\u062d\u0644\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.  \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0645\u0627 \u06cc\u06a9 Worker Pool \u0645\u0634\u0627\u0628\u0647 \u0628\u0647 \u0646\u0627\u0645 VIOLIN \u0631\u0627 \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u062a\u0627 \u062f\u0631\u06a9 \u0628\u0647\u062a\u0631\u06cc \u0627\u0632 Worker Pools \u0628\u0647 \u062f\u0633\u062a \u0622\u0648\u0631\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%DA%86%DA%AF%D9%88%D9%86%D9%87_%DB%8C%DA%A9_%D8%A7%D8%B3%D8%AA%D8%AE%D8%B1_%DA%A9%D8%A7%D8%B1%DA%AF%D8%B1_%D8%A8%D9%86%D9%88%DB%8C%D8%B3%DB%8C%D9%85%D8%9F\"><\/span>\n<p>  \u0686\u06af\u0648\u0646\u0647 \u06cc\u06a9 \u0627\u0633\u062a\u062e\u0631 \u06a9\u0627\u0631\u06af\u0631 \u0628\u0646\u0648\u06cc\u0633\u06cc\u0645\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u0639\u0631\u0641\u06cc \u0645\u062e\u062a\u0635\u0631 Worker Pool \u062f\u0631 \u0628\u062e\u0634 \u0642\u0628\u0644\u060c \u0645\u0627 \u0622\u0645\u0648\u062e\u062a\u06cc\u0645 \u06a9\u0647 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc Worker Pool \u0634\u0627\u0645\u0644 \u062d\u0641\u0638 \u062a\u0639\u062f\u0627\u062f \u0645\u0639\u06cc\u0646\u06cc \u0627\u0632 \u06af\u0648\u0631\u0648\u062a\u06cc\u0646 \u0647\u0627 \u0648 \u0627\u062c\u0627\u0632\u0647 \u062f\u0627\u062f\u0646 \u0628\u0647 \u0622\u0646\u0647\u0627 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0648\u0638\u0627\u06cc\u0641 \/ \u0645\u0634\u0627\u063a\u0644 \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a.  \u0631\u0648\u06cc\u06a9\u0631\u062f \u0646\u0648\u0634\u062a\u0646 \u06cc\u06a9 Worker Pool \u0633\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f:<\/p>\n<ul>\n<li>\u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u062e\u0627\u0635\u06cc \u0628\u0631\u0627\u06cc \u062a\u0639\u062f\u0627\u062f \u06af\u0648\u0631\u0648\u062a\u06cc\u0646 \u0647\u0627 \u062f\u0631 Worker Pool \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0646\u06cc\u062f.  \u062a\u0639\u062f\u0627\u062f \u06af\u0648\u0631\u0648\u062a\u06cc\u0646 \u0647\u0627\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 Worker Pool \u0646\u0628\u0627\u06cc\u062f \u0627\u0632 \u0627\u06cc\u0646 \u062d\u062f \u062a\u062c\u0627\u0648\u0632 \u06a9\u0646\u062f.<\/li>\n<li>\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06cc\u06a9 \u06a9\u0627\u0631 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u0634\u0648\u062f\u060c \u06cc\u06a9 \u06af\u0648\u0631\u0648\u062a\u06cc\u0646 \u0627\u0632 Worker Pool \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0622\u0646 \u0627\u062e\u062a\u0635\u0627\u0635 \u062f\u0647\u06cc\u062f.<\/li>\n<li>\u0627\u06af\u0631 \u06a9\u0627\u0631\u06af\u0631 \u0628\u06cc\u06a9\u0627\u0631 (\u06af\u0648\u0631\u0648\u062a\u06cc\u0646) \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0647 \u06a9\u0627\u0631\u06af\u0631 \u0628\u06cc\u06a9\u0627\u0631 \u0645\u062d\u0648\u0644 \u06a9\u0646\u06cc\u062f.  \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a\u060c \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0628\u0647 \u062d\u062f \u0645\u062c\u0627\u0632 \u06af\u0648\u0631\u0648\u062a\u06cc\u0646 \u0647\u0627 \u0631\u0633\u06cc\u062f\u0647 \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631.<\/li>\n<li>\u0627\u06af\u0631 \u0628\u0647 \u062d\u062f \u0645\u062c\u0627\u0632 \u0631\u0633\u06cc\u062f\u060c \u06a9\u0627\u0631 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0635\u0641 \u06a9\u0634 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f (\u06cc\u0627 \u0627\u0632 \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u06cc\u06af\u0631\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f).  \u0627\u06af\u0631 \u0628\u0647 \u062d\u062f \u0645\u062c\u0627\u0632 \u0646\u0631\u0633\u06cc\u062f\u0647 \u0627\u06cc\u062f\u060c \u06cc\u06a9 \u06a9\u0627\u0631\u06af\u0631 \u062c\u062f\u06cc\u062f \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<p>\u0628\u0631\u0627\u06cc \u062f\u0631\u06a9 \u062f\u0642\u06cc\u0642 \u062a\u0631 \u0645\u0646\u0637\u0642\u060c \u0644\u0637\u0641\u0627\u064b \u0628\u0647 \u0646\u0645\u0648\u062f\u0627\u0631 \u0632\u06cc\u0631 \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f.  \u062a\u0648\u0636\u06cc\u062d \u0632\u0645\u0627\u0646 \u0645\u0635\u0631\u0641 \u0648\u0638\u0627\u06cc\u0641 \u0627\u0632 \u0635\u0641 \u0648\u0638\u0627\u06cc\u0641 \u062f\u0631 \u0642\u0633\u0645\u062a \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u06a9\u062f \u0645\u0648\u0631\u062f \u0628\u062d\u062b \u0642\u0631\u0627\u0631 \u062e\u0648\u0627\u0647\u062f \u06af\u0631\u0641\u062a.<\/p>\n<p><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AA%D8%AC%D8%B2%DB%8C%D9%87_%D9%88_%D8%AA%D8%AD%D9%84%DB%8C%D9%84_%DA%A9%D8%AF\"><\/span>\n<p>  \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u06a9\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u062f\u0631\u06a9 \u06a9\u0644\u06cc \u0627\u0632 \u0646\u062d\u0648\u0647 \u06a9\u0627\u0631 \u06cc\u06a9 Worker Pool \u062f\u0627\u0631\u06cc\u0645\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0634\u0631\u0648\u0639 \u0628\u0647 \u0646\u0648\u0634\u062a\u0646 \u06a9\u062f \u06a9\u0646\u06cc\u0645.  \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627\u060c \u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u0646\u0628\u0639 \u0628\u0627\u0632 \u0639\u0627\u0644\u06cc \u0627\u0632 Worker Pool \u0628\u0627 1.1k \u0633\u062a\u0627\u0631\u0647 \u062f\u0631 GitHub \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.  \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u0627\u0641\u062a.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1_%D8%A7%D8%B5%D9%84%DB%8C_WorkerPool\"><\/span>\n<p>  \u0633\u0627\u062e\u062a\u0627\u0631 \u0627\u0635\u0644\u06cc WorkerPool<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0633\u0627\u062e\u062a\u0627\u0631 \u0627\u0635\u0644\u06cc \u0627\u06cc\u0646 Worker Pool \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">type<\/span> <span class=\"n\">WorkerPool<\/span> <span class=\"k\">struct<\/span> <span class=\"p\">{<\/span>\n    <span class=\"n\">maxWorkers<\/span>   <span class=\"kt\">int<\/span>\n    <span class=\"n\">taskQueue<\/span>    <span class=\"k\">chan<\/span> <span class=\"k\">func<\/span><span class=\"p\">()<\/span>\n    <span class=\"n\">workerQueue<\/span>  <span class=\"k\">chan<\/span> <span class=\"k\">func<\/span><span class=\"p\">()<\/span>\n    <span class=\"n\">stoppedChan<\/span>  <span class=\"k\">chan<\/span> <span class=\"k\">struct<\/span><span class=\"p\">{}<\/span>\n    <span class=\"n\">stopSignal<\/span>   <span class=\"k\">chan<\/span> <span class=\"k\">struct<\/span><span class=\"p\">{}<\/span>\n    <span class=\"n\">waitingQueue<\/span> <span class=\"n\">deque<\/span><span class=\"o\">.<\/span><span class=\"n\">Deque<\/span><span class=\"p\">[<\/span><span class=\"k\">func<\/span><span class=\"p\">()]<\/span>\n    <span class=\"n\">stopLock<\/span>     <span class=\"n\">sync<\/span><span class=\"o\">.<\/span><span class=\"n\">Mutex<\/span>\n    <span class=\"n\">stopOnce<\/span>     <span class=\"n\">sync<\/span><span class=\"o\">.<\/span><span class=\"n\">Once<\/span>\n    <span class=\"n\">stopped<\/span>      <span class=\"kt\">bool<\/span>\n    <span class=\"n\">waiting<\/span>      <span class=\"kt\">int32<\/span>\n    <span class=\"n\">wait<\/span>         <span class=\"kt\">bool<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0628\u0631 \u0631\u0648\u06cc \u062e\u0648\u0627\u0635 \u0632\u06cc\u0631 \u062a\u0645\u0631\u06a9\u0632 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f:<\/p>\n<ul>\n<li>\n<strong>maxWorkers<\/strong>: \u062d\u062f\u0627\u06a9\u062b\u0631 \u062a\u0639\u062f\u0627\u062f \u06af\u0648\u0631\u0648\u062a\u06cc\u0646 \u0647\u0627 (\u06cc\u0639\u0646\u06cc \u06a9\u0627\u0631\u06af\u0631\u0627\u0646) \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 Worker Pool.<\/li>\n<li>\n<strong>taskQueue<\/strong>: \u0635\u0641 \u0648\u0638\u0627\u06cc\u0641 \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0648\u0638\u0627\u06cc\u0641 \u0627\u0631\u0633\u0627\u0644 \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f.<\/li>\n<li>\n<strong>\u0635\u0641 \u06a9\u0627\u0631\u06af\u0631<\/strong>: \u0635\u0641 \u06a9\u0627\u0631\u06af\u0631\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0627\u0632 \u0622\u0646 \u0648\u0638\u0627\u06cc\u0641 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/li>\n<li>\n<strong>\u0635\u0641 \u0627\u0646\u062a\u0638\u0627\u0631<\/strong>: \u0635\u0641 \u0627\u0646\u062a\u0638\u0627\u0631\u060c \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0648\u0638\u0627\u06cc\u0641 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u06af\u0631 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0646\u06cc\u0633\u062a \u0648 \u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0641\u0639\u0644\u06cc \u0628\u0647 \u062d\u062f\u0627\u06a9\u062b\u0631 \u062d\u062f \u0645\u062c\u0627\u0632 \u0631\u0633\u06cc\u062f\u0647 \u0627\u0633\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/li>\n<\/ul>\n<p>\u0686\u0646\u062f \u0646\u06a9\u062a\u0647 \u0645\u0647\u0645 \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647:<\/p>\n<ul>\n<li>\u0646\u0648\u0639 \u062f\u0627\u062f\u0647 \u062e\u0627\u0635 \u0639\u0646\u0627\u0635\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0647\u0631 \u0633\u0647 \u0635\u0641 \u0627\u0633\u062a <code>func()<\/code>\u060c \u0646\u0634\u0627\u0646 \u062f\u0647\u0646\u062f\u0647 \u0646\u0648\u0639 \u0648\u0638\u0627\u06cc\u0641 \u0627\u0631\u0633\u0627\u0644\u06cc \u0627\u0633\u062a (\u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f).<\/li>\n<li><strong>\u0627\u06cc\u0646\u062c\u0627\u060c \u062f\u0648 \u0635\u0641\u060c <code>taskQueue<\/code> \u0648 <code>workerQueue<\/code>\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06cc\u06a9 \u06a9\u0627\u0631 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u0634\u0648\u062f\u060c \u0627\u0628\u062a\u062f\u0627 \u0628\u0647 \u0622\u0646 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u0634\u0648\u062f <code>taskQueue<\/code>.  \u0633\u067e\u0633\u060c \u06cc\u06a9 \u0648\u0638\u06cc\u0641\u0647 \u0627\u0632 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0645\u06cc \u0634\u0648\u062f <code>taskQueue<\/code> \u0648 \u0628\u0647 <code>workerQueue<\/code> \u0628\u0631\u0627\u06cc \u0627\u0639\u062f\u0627\u0645 \u062a\u0648\u0633\u0637 \u06a9\u0627\u0631\u06af\u0631  \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0633\u062a\u0642\u06cc\u0645 \u062a\u0648\u0633\u0637 \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0627\u0632 \u0645\u0635\u0631\u0641 \u0646\u0645\u06cc \u0634\u0648\u062f <code>taskQueue<\/code>.<\/strong><\/li>\n<li>\u0646\u0648\u0639 \u062f\u0627\u062f\u0647 \u0627\u0632 <code>waitingQueue<\/code> \u06cc\u06a9 \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u0627\u062f\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 workpool \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.  \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0635\u0641 \u0639\u0645\u0648\u0645\u06cc FIFO \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f.  \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0628\u0639\u062f\u0627\u064b Worker Pool \u062e\u0648\u062f \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u0645\u0648\u062c\u0648\u062f \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u0645 <code>chan<\/code>\u060c <code>list.List<\/code>\u060c \u0648 \u063a\u06cc\u0631\u0647.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AC%D8%AF%DB%8C%D8%AF\"><\/span>\n<p>  \u062c\u062f\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0622\u0646 \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645 <code>New<\/code> \u062a\u0627\u0628\u0639\u060c \u06a9\u0647 \u062a\u0627\u0628\u0639\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f a \u0627\u0633\u062a <code>WorkerPool<\/code> \u0647\u062f\u0641 &#8211; \u0634\u06cc.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">func<\/span> <span class=\"n\">New<\/span><span class=\"p\">(<\/span><span class=\"n\">maxWorkers<\/span> <span class=\"kt\">int<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span><span class=\"n\">WorkerPool<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c\">\/\/ There must be at least one worker.<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">maxWorkers<\/span> <span class=\"o\">&lt;<\/span> <span class=\"m\">1<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">maxWorkers<\/span> <span class=\"o\">=<\/span> <span class=\"m\">1<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"n\">pool<\/span> <span class=\"o\">:=<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">WorkerPool<\/span><span class=\"p\">{<\/span>\n        <span class=\"n\">maxWorkers<\/span><span class=\"o\">:<\/span>  <span class=\"n\">maxWorkers<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">taskQueue<\/span><span class=\"o\">:<\/span>   <span class=\"nb\">make<\/span><span class=\"p\">(<\/span><span class=\"k\">chan<\/span> <span class=\"k\">func<\/span><span class=\"p\">()),<\/span>\n        <span class=\"n\">workerQueue<\/span><span class=\"o\">:<\/span> <span class=\"nb\">make<\/span><span class=\"p\">(<\/span><span class=\"k\">chan<\/span> <span class=\"k\">func<\/span><span class=\"p\">()),<\/span>\n        <span class=\"n\">stopSignal<\/span><span class=\"o\">:<\/span>  <span class=\"nb\">make<\/span><span class=\"p\">(<\/span><span class=\"k\">chan<\/span> <span class=\"k\">struct<\/span><span class=\"p\">{}),<\/span>\n        <span class=\"n\">stoppedChan<\/span><span class=\"o\">:<\/span> <span class=\"nb\">make<\/span><span class=\"p\">(<\/span><span class=\"k\">chan<\/span> <span class=\"k\">struct<\/span><span class=\"p\">{}),<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c\">\/\/ Start the task dispatcher.<\/span>\n    <span class=\"k\">go<\/span> <span class=\"n\">pool<\/span><span class=\"o\">.<\/span><span class=\"n\">dispatch<\/span><span class=\"p\">()<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"n\">pool<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc \u0628\u06cc\u0646\u06cc\u0645\u060c \u0633\u0627\u062e\u062a\u0627\u0631 \u06a9\u0644\u06cc \u06a9\u0627\u0645\u0644\u0627\u064b \u0648\u0627\u0636\u062d \u0627\u0633\u062a.  \u0634\u0631\u0627\u06cc\u0637 \u0627\u0648\u0644\u06cc\u0647 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 WorkerPool \u062d\u062f\u0627\u0642\u0644 \u06cc\u06a9 \u06af\u0648\u0631\u0648\u062a\u06cc\u0646 \u0631\u0627 \u062d\u0641\u0638 \u0645\u06cc \u06a9\u0646\u062f.  \u0633\u067e\u0633\u060c \u0634\u06cc WorkerPool \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0634\u0627\u06cc\u0627\u0646 \u0630\u06a9\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0647\u0631 \u062f\u0648 <code>taskQueue<\/code> \u0648 <code>workerQueue<\/code> \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627 \u06a9\u0627\u0646\u0627\u0644 \u0647\u0627\u06cc \u0628\u0627\u0641\u0631 \u0646\u0634\u062f\u0647 \u0647\u0633\u062a\u0646\u062f.  \u067e\u0633 \u0627\u0632 \u0622\u0646\u060c \u06cc\u06a9 \u06af\u0648\u0631\u0648\u062a\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0645\u062a\u062f \u0627\u0635\u0644\u06cc WorkerPool \u0634\u0631\u0648\u0639 \u0645\u06cc \u0634\u0648\u062f. <code>pool.dispatch<\/code>.  \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0634\u06cc WorkerPool \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B1%D8%B3%D8%A7%D9%84\"><\/span>\n<p>  \u0627\u0631\u0633\u0627\u0644<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0647 \u0631\u0648\u0634 \u0627\u0635\u0644\u06cc \u0628\u067e\u0631\u062f\u0627\u0632\u06cc\u0645 <code>pool.dispatch<\/code>\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0686\u0646\u062f \u0631\u0648\u0634 \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0627\u0639\u062a\u0645\u0627\u062f \u0628\u0647 \u0646\u0641\u0633 \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">func<\/span> <span class=\"p\">(<\/span><span class=\"n\">p<\/span> <span class=\"o\">*<\/span><span class=\"n\">WorkerPool<\/span><span class=\"p\">)<\/span> <span class=\"n\">Submit<\/span><span class=\"p\">(<\/span><span class=\"n\">task<\/span> <span class=\"k\">func<\/span><span class=\"p\">())<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">task<\/span> <span class=\"o\">!=<\/span> <span class=\"no\">nil<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">taskQueue<\/span> <span class=\"o\">&lt;-<\/span> <span class=\"n\">task<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0631\u0627 <code>Submit<\/code> \u0631\u0648\u0634 \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u06a9\u0627\u0631\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u06a9\u0627\u0631 \u0627\u0646\u062c\u0627\u0645 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06a9\u0631\u062f <code>nil<\/code> \u0648 \u0633\u067e\u0633 \u0622\u0646 \u0631\u0627 \u0628\u0647 <code>taskQueue<\/code>.  \u0628\u0647 \u0647\u0631 \u062d\u0627\u0644\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0628\u0647 \u0637\u0648\u0631 \u062e\u0644\u0627\u0635\u0647 \u0628\u062d\u062b \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0627\u06af\u0631 \u0639\u0628\u0648\u0631 \u06a9\u0646\u06cc\u0645 \u0686\u0647 \u0627\u062a\u0641\u0627\u0642\u06cc \u0645\u06cc \u0627\u0641\u062a\u062f <code>nil<\/code> \u0628\u0647 \u06a9\u0627\u0646\u0627\u0644  \u0627\u06af\u0631\u0686\u0647 \u06a9\u0627\u0646\u0627\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u062f <code>nil<\/code> \u0628\u062f\u0648\u0646 \u0647\u06cc\u0686 \u0645\u0634\u06a9\u0644\u06cc\u060c \u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0622\u0646 \u0645\u0646\u062c\u0631 \u0628\u0647 \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627\u06cc \u0627\u0634\u0627\u0631\u0647 \u06af\u0631 \u062a\u0647\u06cc \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">func<\/span> <span class=\"n\">main<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"n\">ch<\/span> <span class=\"o\">:=<\/span> <span class=\"nb\">make<\/span><span class=\"p\">(<\/span><span class=\"k\">chan<\/span> <span class=\"k\">func<\/span><span class=\"p\">())<\/span>\n    <span class=\"k\">go<\/span> <span class=\"k\">func<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">ch<\/span> <span class=\"o\">&lt;-<\/span> <span class=\"no\">nil<\/span>\n    <span class=\"p\">}()<\/span>\n    <span class=\"n\">res<\/span><span class=\"p\">,<\/span> <span class=\"n\">ok<\/span> <span class=\"o\">:=<\/span> <span class=\"o\">&lt;-<\/span><span class=\"n\">ch<\/span>\n    <span class=\"n\">fmt<\/span><span class=\"o\">.<\/span><span class=\"n\">Println<\/span><span class=\"p\">(<\/span><span class=\"n\">res<\/span><span class=\"p\">,<\/span> <span class=\"n\">ok<\/span><span class=\"p\">)<\/span> <span class=\"c\">\/\/ &lt;nil&gt; true<\/span>\n    <span class=\"n\">res<\/span><span class=\"p\">()<\/span>                <span class=\"c\">\/\/ panic: runtime error: invalid memory address or nil pointer dereference<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B1%D8%B3%D8%A7%D9%84_%D8%B5%D8%A8%D8%B1_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0627\u0631\u0633\u0627\u0644 \u0635\u0628\u0631 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u06cc\u06a9 \u0631\u0648\u0634 \u062f\u0648\u0642\u0644\u0648 \u0628\u0631\u0627\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f <code>Submit<\/code>\u060c \u06a9\u0647 \u0645\u0633\u062f\u0648\u062f \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0645\u0646\u062a\u0638\u0631 \u0645\u06cc \u0645\u0627\u0646\u062f \u062a\u0627 \u06a9\u0627\u0631 \u0627\u0631\u0633\u0627\u0644\u06cc \u06a9\u0627\u0645\u0644 \u0634\u0648\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">func<\/span> <span class=\"p\">(<\/span><span class=\"n\">p<\/span> <span class=\"o\">*<\/span><span class=\"n\">WorkerPool<\/span><span class=\"p\">)<\/span> <span class=\"n\">SubmitWait<\/span><span class=\"p\">(<\/span><span class=\"n\">task<\/span> <span class=\"k\">func<\/span><span class=\"p\">())<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">task<\/span> <span class=\"o\">==<\/span> <span class=\"no\">nil<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"n\">doneChan<\/span> <span class=\"o\">:=<\/span> <span class=\"nb\">make<\/span><span class=\"p\">(<\/span><span class=\"k\">chan<\/span> <span class=\"k\">struct<\/span><span class=\"p\">{})<\/span>\n    <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">taskQueue<\/span> <span class=\"o\">&lt;-<\/span> <span class=\"k\">func<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">task<\/span><span class=\"p\">()<\/span>\n        <span class=\"nb\">close<\/span><span class=\"p\">(<\/span><span class=\"n\">doneChan<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"o\">&lt;-<\/span><span class=\"n\">doneChan<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u062e\u0627\u0635 \u0634\u0627\u0645\u0644 \u06cc\u06a9 \u0628\u0627\u0631 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0648\u0638\u06cc\u0641\u0647 \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u0648 \u0633\u067e\u0633 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u06a9\u0627\u0646\u0627\u0644 \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0647\u0648\u0634\u0645\u0646\u062f\u0627\u0646\u0647 \u0627\u0633\u062a.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-2\"><\/span>\n<p>  \u0627\u0631\u0633\u0627\u0644<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0631\u0648\u0634 \u0627\u0635\u0644\u06cc WorkerPool \u0634\u0627\u0645\u0644 \u06af\u0631\u062f\u0634 \u06a9\u0627\u0631 \u06a9\u0627\u0645\u0644 Worker Pool \u0627\u0633\u062a \u06a9\u0647 \u0642\u0628\u0644\u0627 \u062a\u062d\u0644\u06cc\u0644 \u06a9\u0631\u062f\u06cc\u0645.<\/p>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9 \u0631\u0648\u0634 \u0628\u0633\u06cc\u0627\u0631 \u0637\u0648\u0644\u0627\u0646\u06cc \u0627\u0633\u062a.  \u0628\u0631\u0627\u06cc \u0633\u0647\u0648\u0644\u062a \u062f\u0631 \u062a\u0648\u0636\u06cc\u062d \u0648 \u062f\u0631\u06a9\u060c \u0627\u0628\u062a\u062f\u0627 \u0631\u0648\u0634 \u06a9\u0627\u0645\u0644 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u06a9\u0646\u0645 \u0648 \u0633\u067e\u0633 \u062a\u06a9 \u062a\u06a9 \u06a9\u062f\u0647\u0627 \u0631\u0627 \u062a\u0648\u0636\u06cc\u062d \u0645\u06cc \u062f\u0647\u0645.  \u062e\u0648\u0627\u0646\u0646\u062f\u06af\u0627\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u0646\u062f \u0648 \u062f\u0631 \u062d\u06cc\u0646 \u062e\u0648\u0627\u0646\u062f\u0646 \u0628\u0647 \u06a9\u062f \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u0646\u062f\u060c \u06cc\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062a\u062d\u0644\u06cc\u0644 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u0646\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">func<\/span> <span class=\"p\">(<\/span><span class=\"n\">p<\/span> <span class=\"o\">*<\/span><span class=\"n\">WorkerPool<\/span><span class=\"p\">)<\/span> <span class=\"n\">dispatch<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">defer<\/span> <span class=\"nb\">close<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">stoppedChan<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">timeout<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">time<\/span><span class=\"o\">.<\/span><span class=\"n\">NewTimer<\/span><span class=\"p\">(<\/span><span class=\"n\">idleTimeout<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">var<\/span> <span class=\"n\">workerCount<\/span> <span class=\"kt\">int<\/span>\n    <span class=\"k\">var<\/span> <span class=\"n\">idle<\/span> <span class=\"kt\">bool<\/span>\n    <span class=\"k\">var<\/span> <span class=\"n\">wg<\/span> <span class=\"n\">sync<\/span><span class=\"o\">.<\/span><span class=\"n\">WaitGroup<\/span>\n\n<span class=\"n\">Loop<\/span><span class=\"o\">:<\/span>\n    <span class=\"k\">for<\/span> <span class=\"p\">{<\/span>\n        <span class=\"c\">\/\/ As long as tasks are in the waiting queue, incoming tasks are put<\/span>\n        <span class=\"c\">\/\/ into the waiting queue and tasks to run are taken from the waiting<\/span>\n        <span class=\"c\">\/\/ queue. Once the waiting queue is empty, then go back to submitting<\/span>\n        <span class=\"c\">\/\/ incoming tasks directly to available workers.<\/span>\n        <span class=\"k\">if<\/span> <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">waitingQueue<\/span><span class=\"o\">.<\/span><span class=\"n\">Len<\/span><span class=\"p\">()<\/span> <span class=\"o\">!=<\/span> <span class=\"m\">0<\/span> <span class=\"p\">{<\/span>\n            <span class=\"k\">if<\/span> <span class=\"o\">!<\/span><span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">processWaitingQueue<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                <span class=\"k\">break<\/span> <span class=\"n\">Loop<\/span>\n            <span class=\"p\">}<\/span>\n            <span class=\"k\">continue<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"k\">select<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">case<\/span> <span class=\"n\">task<\/span><span class=\"p\">,<\/span> <span class=\"n\">ok<\/span> <span class=\"o\">:=<\/span> <span class=\"o\">&lt;-<\/span><span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">taskQueue<\/span><span class=\"o\">:<\/span>\n            <span class=\"k\">if<\/span> <span class=\"o\">!<\/span><span class=\"n\">ok<\/span> <span class=\"p\">{<\/span>\n                <span class=\"k\">break<\/span> <span class=\"n\">Loop<\/span>\n            <span class=\"p\">}<\/span>\n            <span class=\"c\">\/\/ Got a task to do.<\/span>\n            <span class=\"k\">select<\/span> <span class=\"p\">{<\/span>\n            <span class=\"k\">case<\/span> <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">workerQueue<\/span> <span class=\"o\">&lt;-<\/span> <span class=\"n\">task<\/span><span class=\"o\">:<\/span>\n            <span class=\"k\">default<\/span><span class=\"o\">:<\/span>\n                <span class=\"c\">\/\/ Create a new worker, if not at max.<\/span>\n                <span class=\"k\">if<\/span> <span class=\"n\">workerCount<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">maxWorkers<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"n\">wg<\/span><span class=\"o\">.<\/span><span class=\"n\">Add<\/span><span class=\"p\">(<\/span><span class=\"m\">1<\/span><span class=\"p\">)<\/span>\n                    <span class=\"k\">go<\/span> <span class=\"n\">worker<\/span><span class=\"p\">(<\/span><span class=\"n\">task<\/span><span class=\"p\">,<\/span> <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">workerQueue<\/span><span class=\"p\">,<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">wg<\/span><span class=\"p\">)<\/span>\n                    <span class=\"n\">workerCount<\/span><span class=\"o\">++<\/span>\n                <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"c\">\/\/ Enqueue task to be executed by next available worker.<\/span>\n                    <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">waitingQueue<\/span><span class=\"o\">.<\/span><span class=\"n\">PushBack<\/span><span class=\"p\">(<\/span><span class=\"n\">task<\/span><span class=\"p\">)<\/span>\n                    <span class=\"n\">atomic<\/span><span class=\"o\">.<\/span><span class=\"n\">StoreInt32<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">waiting<\/span><span class=\"p\">,<\/span> <span class=\"kt\">int32<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">waitingQueue<\/span><span class=\"o\">.<\/span><span class=\"n\">Len<\/span><span class=\"p\">()))<\/span>\n                <span class=\"p\">}<\/span>\n            <span class=\"p\">}<\/span>\n            <span class=\"n\">idle<\/span> <span class=\"o\">=<\/span> <span class=\"no\">false<\/span>\n        <span class=\"k\">case<\/span> <span class=\"o\">&lt;-<\/span><span class=\"n\">timeout<\/span><span class=\"o\">.<\/span><span class=\"n\">C<\/span><span class=\"o\">:<\/span>\n            <span class=\"c\">\/\/ Timed out waiting for work to arrive. Kill a ready worker if<\/span>\n            <span class=\"c\">\/\/ pool has been idle for a whole timeout.<\/span>\n            <span class=\"k\">if<\/span> <span class=\"n\">idle<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"n\">workerCount<\/span> <span class=\"o\">&gt;<\/span> <span class=\"m\">0<\/span> <span class=\"p\">{<\/span>\n                <span class=\"k\">if<\/span> <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">killIdleWorker<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"n\">workerCount<\/span><span class=\"o\">--<\/span>\n                <span class=\"p\">}<\/span>\n            <span class=\"p\">}<\/span>\n            <span class=\"n\">idle<\/span> <span class=\"o\">=<\/span> <span class=\"no\">true<\/span>\n            <span class=\"n\">timeout<\/span><span class=\"o\">.<\/span><span class=\"n\">Reset<\/span><span class=\"p\">(<\/span><span class=\"n\">idleTimeout<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c\">\/\/ If instructed to wait, then run tasks that are already queued.<\/span>\n    <span class=\"k\">if<\/span> <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">wait<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">runQueuedTasks<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"c\">\/\/ Stop all remaining workers as they become ready.<\/span>\n    <span class=\"k\">for<\/span> <span class=\"n\">workerCount<\/span> <span class=\"o\">&gt;<\/span> <span class=\"m\">0<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">workerQueue<\/span> <span class=\"o\">&lt;-<\/span> <span class=\"no\">nil<\/span>\n        <span class=\"n\">workerCount<\/span><span class=\"o\">--<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"n\">wg<\/span><span class=\"o\">.<\/span><span class=\"n\">Wait<\/span><span class=\"p\">()<\/span>\n\n    <span class=\"n\">timeout<\/span><span class=\"o\">.<\/span><span class=\"n\">Stop<\/span><span class=\"p\">()<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0648\u0627\u0642\u0639\u060c \u0648\u0642\u062a\u06cc \u0628\u0647 \u06a9\u0644 \u0631\u0648\u0634 \u0646\u06af\u0627\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0647\u0646\u0648\u0632 \u06a9\u0627\u0645\u0644\u0627\u064b \u0648\u0627\u0636\u062d \u0627\u0633\u062a \u0648 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0628\u0627 \u062a\u0623\u0645\u0644 \u0646\u0638\u0631\u0627\u062a\u06cc \u0631\u0627 \u062f\u0631 \u0634\u0627\u062e\u0647 \u0647\u0627\u06cc \u0645\u0646\u0637\u0642 \u0627\u0635\u0644\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<ul>\n<li>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0627 \u0628\u0631\u0631\u0633\u06cc \u0642\u0633\u0645\u062a \u0627\u0639\u0644\u0627\u0645 \u0645\u062a\u063a\u06cc\u0631 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627\u06cc \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645:\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code>  <span class=\"k\">defer<\/span> <span class=\"nb\">close<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">stoppedChan<\/span><span class=\"p\">)<\/span>\n  <span class=\"n\">timeout<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">time<\/span><span class=\"o\">.<\/span><span class=\"n\">NewTimer<\/span><span class=\"p\">(<\/span><span class=\"n\">idleTimeout<\/span><span class=\"p\">)<\/span>\n  <span class=\"k\">var<\/span> <span class=\"n\">workerCount<\/span> <span class=\"kt\">int<\/span>\n  <span class=\"k\">var<\/span> <span class=\"n\">idle<\/span> <span class=\"kt\">bool<\/span>\n  <span class=\"k\">var<\/span> <span class=\"n\">wg<\/span> <span class=\"n\">sync<\/span><span class=\"o\">.<\/span><span class=\"n\">WaitGroup<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code>  <span class=\"n\">LOOP<\/span><span class=\"o\">:<\/span>\n    <span class=\"k\">for<\/span> <span class=\"p\">{<\/span>\n          <span class=\"c\">\/\/ ... (\u6682\u65f6\u8df3\u8fc7\u7684\u90e8\u5206)<\/span>\n\n          <span class=\"k\">select<\/span> <span class=\"p\">{<\/span>\n          <span class=\"k\">case<\/span> <span class=\"n\">task<\/span><span class=\"p\">,<\/span> <span class=\"n\">ok<\/span> <span class=\"o\">:=<\/span> <span class=\"o\">&lt;-<\/span><span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">taskQueue<\/span><span class=\"o\">:<\/span>\n              <span class=\"k\">if<\/span> <span class=\"o\">!<\/span><span class=\"n\">ok<\/span> <span class=\"p\">{<\/span>\n                  <span class=\"k\">break<\/span> <span class=\"n\">Loop<\/span>\n              <span class=\"p\">}<\/span>\n              <span class=\"c\">\/\/ Got a task to do.<\/span>\n              <span class=\"k\">select<\/span> <span class=\"p\">{<\/span>\n              <span class=\"k\">case<\/span> <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">workerQueue<\/span> <span class=\"o\">&lt;-<\/span> <span class=\"n\">task<\/span><span class=\"o\">:<\/span>\n              <span class=\"k\">default<\/span><span class=\"o\">:<\/span>\n                  <span class=\"c\">\/\/ Create a new worker, if not at max.<\/span>\n                  <span class=\"k\">if<\/span> <span class=\"n\">workerCount<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">maxWorkers<\/span> <span class=\"p\">{<\/span>\n                      <span class=\"n\">wg<\/span><span class=\"o\">.<\/span><span class=\"n\">Add<\/span><span class=\"p\">(<\/span><span class=\"m\">1<\/span><span class=\"p\">)<\/span>\n                      <span class=\"k\">go<\/span> <span class=\"n\">worker<\/span><span class=\"p\">(<\/span><span class=\"n\">task<\/span><span class=\"p\">,<\/span> <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">workerQueue<\/span><span class=\"p\">,<\/span> <span class=\"o\">&amp;<\/span><span class=\"n\">wg<\/span><span class=\"p\">)<\/span>\n                      <span class=\"n\">workerCount<\/span><span class=\"o\">++<\/span>\n                  <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n                      <span class=\"c\">\/\/ Enqueue task to be executed by next available worker.<\/span>\n                      <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">waitingQueue<\/span><span class=\"o\">.<\/span><span class=\"n\">PushBack<\/span><span class=\"p\">(<\/span><span class=\"n\">task<\/span><span class=\"p\">)<\/span>\n                      <span class=\"n\">atomic<\/span><span class=\"o\">.<\/span><span class=\"n\">StoreInt32<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">waiting<\/span><span class=\"p\">,<\/span> <span class=\"kt\">int32<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">waitingQueue<\/span><span class=\"o\">.<\/span><span class=\"n\">Len<\/span><span class=\"p\">()))<\/span>\n                  <span class=\"p\">}<\/span>\n              <span class=\"p\">}<\/span>\n              <span class=\"n\">idle<\/span> <span class=\"o\">=<\/span> <span class=\"no\">false<\/span>\n          <span class=\"k\">case<\/span> <span class=\"o\">&lt;-<\/span><span class=\"n\">timeout<\/span><span class=\"o\">.<\/span><span class=\"n\">C<\/span><span class=\"o\">:<\/span>\n              <span class=\"c\">\/\/ Timed out waiting for work to arrive. Kill a ready worker if<\/span>\n              <span class=\"c\">\/\/ pool has been idle for a whole timeout.<\/span>\n              <span class=\"k\">if<\/span> <span class=\"n\">idle<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"n\">workerCount<\/span> <span class=\"o\">&gt;<\/span> <span class=\"m\">0<\/span> <span class=\"p\">{<\/span>\n                  <span class=\"k\">if<\/span> <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">killIdleWorker<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                      <span class=\"n\">workerCount<\/span><span class=\"o\">--<\/span>\n                  <span class=\"p\">}<\/span>\n              <span class=\"p\">}<\/span>\n              <span class=\"n\">idle<\/span> <span class=\"o\">=<\/span> <span class=\"no\">true<\/span>\n              <span class=\"n\">timeout<\/span><span class=\"o\">.<\/span><span class=\"n\">Reset<\/span><span class=\"p\">(<\/span><span class=\"n\">idleTimeout<\/span><span class=\"p\">)<\/span>\n          <span class=\"p\">}<\/span>\n      <span class=\"p\">}<\/span>\n  <span class=\"c\">\/\/ ...<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\n<p>\u0627\u0648\u0644\u06cc\u0646 <code>select<\/code> \u0628\u06cc\u0627\u0646\u06cc\u0647 \u062f\u0631 <code>for<\/code> \u062d\u0644\u0642\u0647 \u062f\u0648 \u062a\u0627 \u062f\u0627\u0631\u062f <code>case<\/code> \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627: \u06cc\u06a9\u06cc \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u06cc\u06a9 \u06a9\u0627\u0631 \u0648 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0627\u06cc \u0645\u0647\u0644\u062a \u0632\u0645\u0627\u0646\u06cc \u06a9\u0627\u0631\u06af\u0631 (\u0647\u06cc\u0686 \u06a9\u0627\u0631 \u062c\u062f\u06cc\u062f\u06cc \u062f\u0631 \u0639\u0631\u0636 \u062f\u0648 \u062b\u0627\u0646\u06cc\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u0646\u0645\u06cc \u0634\u0648\u062f).<\/p>\n<\/li>\n<li>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0627 \u067e\u0631\u0648\u0646\u062f\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u0648\u0638\u06cc\u0641\u0647 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645.  \u0627\u0628\u062a\u062f\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u06cc\u06a9 \u06a9\u0627\u0631 \u0648\u0627\u0642\u0639\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0634\u062f\u0647 \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631.  \u0627\u06af\u0631 <code>ok<\/code> \u0627\u0633\u062a <code>false<\/code>\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 <code>taskQueue<\/code> \u06a9\u0627\u0646\u0627\u0644 \u0628\u0633\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a  \u062f\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0627\u0632 \u062d\u0644\u0642\u0647 \u062e\u0627\u0631\u062c \u0645\u06cc \u0634\u0648\u062f.  \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0628\u0631\u0686\u0633\u0628 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u062f\u0627\u062e\u0644 \u062a\u0648\u062f\u0631\u062a\u0648 \u0627\u0633\u062a <code>select<\/code> \u062f\u0627\u062e\u0644 for-sect\u060c \u06cc\u06a9 \u0645\u0646\u0638\u0645 <code>break<\/code> \u0628\u06cc\u0627\u0646\u06cc\u0647 \u0641\u0642\u0637 \u0627\u0632 \u062c\u0631\u06cc\u0627\u0646 \u062e\u0627\u0631\u062c \u0645\u06cc \u0634\u0648\u062f <code>select<\/code> \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0627\u062c\u0631\u0627\u06cc \u06a9\u062f \u0631\u0627 \u062f\u0631 \u062e\u0627\u0631\u062c \u0627\u0632 \u0622\u0646 \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f <code>select<\/code>\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 \u062a\u06a9\u0631\u0627\u0631 \u0628\u0639\u062f\u06cc \u0627\u0632 <code>for<\/code> \u062d\u0644\u0642\u0647  \u0628\u0631\u0627\u06cc \u062e\u0631\u0648\u062c \u0627\u0632 \u0628\u06cc\u0631\u0648\u0646 <code>for<\/code> \u062d\u0644\u0642\u0647 \u0645\u0633\u062a\u0642\u06cc\u0645\u060c \u06cc\u06a9 \u0628\u0631\u0686\u0633\u0628 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0633\u067e\u0633\u060c \u062f\u06cc\u06af\u0631\u06cc <code>select<\/code> \u0628\u06cc\u0627\u0646\u06cc\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0627\u06af\u0631 \u06a9\u0627\u0631\u06af\u0631 \u0628\u06cc\u06a9\u0627\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0648\u0638\u06cc\u0641\u0647 \u0628\u0647 \u0622\u0646 \u06a9\u0627\u0631\u06af\u0631 \u0645\u062d\u0648\u0644 \u0645\u06cc \u0634\u0648\u062f (<code>p.workerQueue &lt;- task<\/code>).  \u0627\u06af\u0631 \u06a9\u0627\u0631\u06af\u0631 \u0628\u06cc\u06a9\u0627\u0631 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u062a\u0639\u062f\u0627\u062f \u0641\u0639\u0644\u06cc \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0628\u0647 \u062d\u062f\u0627\u06a9\u062b\u0631 \u062d\u062f \u0645\u062c\u0627\u0632 \u0631\u0633\u06cc\u062f\u0647 \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631.  \u0627\u06af\u0631 \u0646\u0647\u060c \u06cc\u06a9 \u06af\u0648\u0631\u0648\u062a\u06cc\u0646 (\u06a9\u0627\u0631\u06af\u0631) \u062c\u062f\u06cc\u062f \u0634\u0631\u0648\u0639 \u0645\u06cc \u0634\u0648\u062f\u060c \u0648 <code>workerCount<\/code> \u0648 <code>sync.WaitGroup<\/code> \u0628\u0627 1 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u06cc \u06cc\u0627\u0628\u0646\u062f <code>dispatch<\/code> \u0631\u0648\u0634 \u0645\u0634\u06a9\u0644\u0627\u062a \u0647\u0645\u0632\u0645\u0627\u0646\u06cc \u0646\u062f\u0627\u0631\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646 \u0622\u0646 \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0627\u062f.  \u0627\u06af\u0631 \u0628\u0647 \u062d\u062f\u0627\u06a9\u062b\u0631 \u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0631\u0633\u06cc\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u0648\u0638\u06cc\u0641\u0647 \u0641\u0639\u0644\u06cc \u062f\u0631 \u0635\u0641 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u0634\u0648\u062f \u0648 \u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0631\u0647\u0627\u06cc \u0627\u0646\u062a\u0638\u0627\u0631 \u062b\u0628\u062a \u0645\u06cc \u0634\u0648\u062f.  \u0627\u0632 \u0622\u0646\u062c\u0627 \u06a9\u0647 <code>p.waiting<\/code> \u06cc\u06a9 \u0645\u0646\u0628\u0639 \u0645\u0634\u062a\u0631\u06a9 \u0627\u0633\u062a\u060c \u0639\u0645\u0644\u06cc\u0627\u062a \u0627\u062a\u0645\u06cc \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0645\u0646\u06cc \u0647\u0645\u0632\u0645\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0645\u0648\u0631\u062f \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0632\u0645\u0627\u0646 \u0627\u0633\u062a\u0631\u0627\u062d\u062a \u06a9\u0627\u0631\u06af\u0631 \u0627\u0628\u062a\u062f\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 <code>idle<\/code> \u0627\u0633\u062a <code>true<\/code> \u0648 \u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0628\u06cc\u0634\u062a\u0631 \u0627\u0632 0 \u0628\u0627\u0634\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0631 \u0627\u0648\u0644\u06cc\u0646 \u062a\u0627\u06cc\u0645 \u0627\u0648\u062a \u06a9\u0627\u0631\u06af\u0631 \u06a9\u0634\u062a\u0647 \u0646\u0645\u06cc \u0634\u0648\u062f.  \u0628\u062c\u0627\u06cc\u060c <code>idle<\/code> \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a <code>true<\/code>\u060c \u0648 \u062a\u0627\u06cc\u0645\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0645\u062c\u062f\u062f \u0645\u06cc \u0634\u0648\u062f.  \u0634\u0627\u06cc\u0627\u0646 \u0630\u06a9\u0631 \u0627\u0633\u062a \u06a9\u0647 <code>p.killIdleWorker<\/code> \u0631\u0648\u0634 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0644\u0632\u0648\u0645\u0627\u064b \u06cc\u06a9 \u06a9\u0627\u0631\u06af\u0631 \u0631\u0627 \u0628\u06a9\u0634\u062f.  \u0633\u0639\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f \u0648 \u0646\u062a\u06cc\u062c\u0647 \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f.  \u0627\u06af\u0631 \u06cc\u06a9 \u06a9\u0627\u0631\u06af\u0631 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u06a9\u0634\u062a\u0647 \u0634\u0648\u062f\u060c \u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u06cc\u06a9 \u0646\u0641\u0631 \u06a9\u0627\u0647\u0634 \u0645\u06cc \u06cc\u0627\u0628\u062f.<\/p>\n<ul>\n<li>\u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0642\u0633\u0645\u062a\u06cc \u0631\u0627 \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0627\u0632 \u0622\u0646 \u0635\u0631\u0641 \u0646\u0638\u0631 \u06a9\u0631\u062f\u06cc\u0645\u060c \u06a9\u0647 \u0627\u0628\u062a\u062f\u0627\u06cc \u0622\u0646 \u0627\u0633\u062a\u060c \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645 <code>for<\/code> \u062d\u0644\u0642\u0647:\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code>  <span class=\"k\">if<\/span> <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">waitingQueue<\/span><span class=\"o\">.<\/span><span class=\"n\">Len<\/span><span class=\"p\">()<\/span> <span class=\"o\">!=<\/span> <span class=\"m\">0<\/span> <span class=\"p\">{<\/span>\n      <span class=\"k\">if<\/span> <span class=\"o\">!<\/span><span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">processWaitingQueue<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n          <span class=\"k\">break<\/span> <span class=\"n\">Loop<\/span>\n      <span class=\"p\">}<\/span>\n      <span class=\"k\">continue<\/span>\n  <span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0628\u062e\u0634 \u0648\u0638\u06cc\u0641\u0647 \u0645\u0635\u0631\u0641 \u0648\u0638\u0627\u06cc\u0641 \u06a9\u0634 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0631 \u0639\u0647\u062f\u0647 \u062f\u0627\u0631\u062f.  \u0631\u0627 <code>p.processWaitingQueue<\/code> \u0631\u0648\u0634 \u06cc\u0627 \u06cc\u06a9 \u06a9\u0627\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u0631\u0627 \u0645\u0635\u0631\u0641 \u0645\u06cc \u06a9\u0646\u062f \u06cc\u0627 \u06cc\u06a9 \u06a9\u0627\u0631 \u0648\u0631\u0648\u062f\u06cc \u0631\u0627 \u062f\u0631 \u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f.  \u0628\u0647 \u0637\u0648\u0631 \u0645\u0634\u0627\u0628\u0647\u060c \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 <code>taskQueue<\/code> \u0628\u0633\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0648 \u0627\u06af\u0631 \u0686\u0646\u06cc\u0646 \u0628\u0627\u0634\u062f\u060c \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062d\u0644\u0642\u0647 \u0631\u0627 \u0645\u06cc \u0634\u06a9\u0646\u062f \u0648 \u062e\u0627\u0631\u062c \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<ul>\n<li>\u0642\u0633\u0645\u062a \u0622\u062e\u0631 \u06a9\u062f \u067e\u0627\u06a9\u0633\u0627\u0632\u06cc \u062e\u0627\u0631\u062c \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a <code>for<\/code> \u062d\u0644\u0642\u0647:\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code>  <span class=\"c\">\/\/ If instructed to wait, then run tasks that are already queued.<\/span>\n  <span class=\"k\">if<\/span> <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">wait<\/span> <span class=\"p\">{<\/span>\n      <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">runQueuedTasks<\/span><span class=\"p\">()<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"c\">\/\/ Stop all remaining workers as they become ready.<\/span>\n  <span class=\"k\">for<\/span> <span class=\"n\">workerCount<\/span> <span class=\"o\">&gt;<\/span> <span class=\"m\">0<\/span> <span class=\"p\">{<\/span>\n      <span class=\"n\">p<\/span><span class=\"o\">.<\/span><span class=\"n\">workerQueue<\/span> <span class=\"o\">&lt;-<\/span> <span class=\"no\">nil<\/span>\n      <span class=\"n\">workerCount<\/span><span class=\"o\">--<\/span>\n  <span class=\"p\">}<\/span>\n  <span class=\"n\">wg<\/span><span class=\"o\">.<\/span><span class=\"n\">Wait<\/span><span class=\"p\">()<\/span>\n\n  <span class=\"n\">timeout<\/span><span class=\"o\">.<\/span><span class=\"n\">Stop<\/span><span class=\"p\">()<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0631\u0627 <code>p.wait<\/code> \u067e\u0631\u0686\u0645 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0646\u0634\u0627\u0646\u06af\u0631 \u062f\u0631 \u0637\u0648\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f <code>Stop<\/code> \u0639\u0645\u0644\u06cc\u0627\u062a\u060c \u0627\u0645\u0627 \u0641\u0639\u0644\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0622\u0646 \u0635\u0631\u0641 \u0646\u0638\u0631 \u06a9\u0646\u06cc\u0645.  \u06a9\u062f \u0632\u06cc\u0631 \u0648\u0638\u06cc\u0641\u0647 \u062a\u0648\u0642\u0641 \u062a\u0645\u0627\u0645\u06cc \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0648 \u062a\u0648\u0642\u0641 \u062a\u0627\u06cc\u0645\u0631 \u0631\u0627 \u0628\u0631 \u0639\u0647\u062f\u0647 \u062f\u0627\u0631\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%DA%A9%D8%A7%D8%B1%DA%AF%D8%B1\"><\/span>\n<p>  \u06a9\u0627\u0631\u06af\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0644\u0647\u060c WorkerPool \u0628\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06cc\u06a9 \u06a9\u0627\u0631\u06af\u0631 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f <code>go worker(task, p.workerQueue, &amp;wg)<\/code>\u060c \u0627\u0646\u062a\u0642\u0627\u0644 \u0648\u0638\u06cc\u0641\u0647 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u060c workerQueue \u0648 WaitGroup \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631.  \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0647\u0648\u0634\u0645\u0646\u062f\u0627\u0646\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f \u0627\u06af\u0631 \u0627\u06cc\u0646\u0637\u0648\u0631 \u0646\u0628\u0627\u0634\u062f <code>nil<\/code> \u0648 \u0633\u067e\u0633 \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u06cc\u06a9 \u06a9\u0627\u0631 \u062c\u062f\u06cc\u062f \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 a <code>nil<\/code> \u0648\u0638\u06cc\u0641\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u0628\u0647 \u062d\u0644\u0642\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.  WaitGroup \u0628\u0627 \u06cc\u06a9 \u06a9\u0627\u0647\u0634 \u0645\u06cc \u06cc\u0627\u0628\u062f \u0648 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u06a9\u0627\u0631\u06af\u0631 \u0627\u062c\u0631\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0631\u0633\u0627\u0646\u062f\u0647 \u0627\u0633\u062a.  \u0627\u06cc\u0646 \u06cc\u06a9 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0647\u0648\u0634\u0645\u0646\u062f\u0627\u0646\u0647 \u0627\u0633\u062a \u0648 \u0645\u0646 \u062e\u0648\u062f\u0645 \u0647\u0645 \u0628\u0647 \u0622\u0646 \u0641\u06a9\u0631 \u0646\u0645\u06cc \u06a9\u0631\u062f\u0645!<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"c\">\/\/ worker executes tasks and stops when it receives a nil task.<\/span>\n<span class=\"k\">func<\/span> <span class=\"n\">worker<\/span><span class=\"p\">(<\/span><span class=\"n\">task<\/span> <span class=\"k\">func<\/span><span class=\"p\">(),<\/span> <span class=\"n\">workerQueue<\/span> <span class=\"k\">chan<\/span> <span class=\"k\">func<\/span><span class=\"p\">(),<\/span> <span class=\"n\">wg<\/span> <span class=\"o\">*<\/span><span class=\"n\">sync<\/span><span class=\"o\">.<\/span><span class=\"n\">WaitGroup<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">for<\/span> <span class=\"n\">task<\/span> <span class=\"o\">!=<\/span> <span class=\"no\">nil<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">task<\/span><span class=\"p\">()<\/span>\n        <span class=\"n\">task<\/span> <span class=\"o\">=<\/span> <span class=\"o\">&lt;-<\/span><span class=\"n\">workerQueue<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"n\">wg<\/span><span class=\"o\">.<\/span><span class=\"n\">Done<\/span><span class=\"p\">()<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0628\u0647 \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u06a9\u062f \u0645\u0646\u0628\u0639 \u0627\u0635\u0644\u06cc WorkerPool \u067e\u0627\u06cc\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.  \u0627\u06a9\u0646\u0648\u0646\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f Worker Pool \u062e\u0648\u062f \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AA%D9%88%D8%B3%D8%B7_%D8%AE%D9%88%D8%AF%D9%85_%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%B4%D8%AF%D9%87_%D8%A7%D8%B3%D8%AA\"><\/span>\n<p>  \u062a\u0648\u0633\u0637 \u062e\u0648\u062f\u0645 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0648\u06cc\u0648\u0644\u0646 \u06cc\u06a9 \u0627\u0633\u062a\u062e\u0631 \u06a9\u0627\u0631\u06af\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0646 \u0646\u0648\u0634\u062a\u0645\u060c \u0628\u0627 \u0627\u0644\u0647\u0627\u0645 \u0627\u0632 gammazero\/workerpool.  API \u0648 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u063a\u0646\u06cc \u062a\u0631\u06cc \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.  \u0628\u06cc \u0632\u062d\u0645\u062a \u0628\u0647\u0634 \u0633\u062a\u0627\u0631\u0647 \u0628\u062f\u06cc \ud83d\ude42<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B4%D9%85%D8%A7%D8%B1%D9%87_%DA%A9%D8%A7%D8%B1%DA%AF%D8%B1\"><\/span>\n<p>  \u0634\u0645\u0627\u0631\u0647 \u06a9\u0627\u0631\u06af\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><code>WorkerNum<\/code>  \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 VIOLIN \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u062a\u0639\u062f\u0627\u062f \u0641\u0639\u0644\u06cc \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0627\u0633\u062a.  \u0628\u062c\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>workerCount<\/code> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u0644\u06cc \u062f\u0631 <code>dispatch<\/code> \u0631\u0648\u0634\u060c VIOLIN \u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0633\u0627\u062e\u062a\u0627\u0631 \u0627\u0635\u0644\u06cc \u062d\u0641\u0638 \u0645\u06cc \u06a9\u0646\u062f.  \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0645\u0646\u06cc \u0647\u0645\u0632\u0645\u0627\u0646\u060c \u0627\u0632 \u0639\u0645\u0644\u06cc\u0627\u062a \u0627\u062a\u0645\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0645\u0646\u062c\u0631 \u0628\u0647 \u0633\u0631\u0628\u0627\u0631 \u0639\u0645\u0644\u06a9\u0631\u062f \u0634\u0648\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">type<\/span> <span class=\"n\">Violin<\/span> <span class=\"k\">struct<\/span> <span class=\"p\">{<\/span>\n    <span class=\"n\">options<\/span> <span class=\"o\">*<\/span><span class=\"n\">options<\/span>\n\n    <span class=\"n\">mu<\/span>   <span class=\"n\">sync<\/span><span class=\"o\">.<\/span><span class=\"n\">Mutex<\/span>\n    <span class=\"n\">once<\/span> <span class=\"n\">sync<\/span><span class=\"o\">.<\/span><span class=\"n\">Once<\/span>\n\n    <span class=\"n\">workerNum<\/span>      <span class=\"kt\">uint32<\/span>\n    <span class=\"n\">taskNum<\/span>        <span class=\"kt\">uint32<\/span>\n    <span class=\"n\">waitingTaskNum<\/span> <span class=\"kt\">uint32<\/span>\n    <span class=\"n\">status<\/span>         <span class=\"kt\">uint32<\/span>\n\n    <span class=\"n\">workerChan<\/span>   <span class=\"k\">chan<\/span> <span class=\"k\">func<\/span><span class=\"p\">()<\/span>\n    <span class=\"n\">taskChan<\/span>     <span class=\"k\">chan<\/span> <span class=\"k\">func<\/span><span class=\"p\">()<\/span>\n    <span class=\"n\">waitingChan<\/span>  <span class=\"k\">chan<\/span> <span class=\"k\">func<\/span><span class=\"p\">()<\/span>\n    <span class=\"n\">dismissChan<\/span>  <span class=\"k\">chan<\/span> <span class=\"k\">struct<\/span><span class=\"p\">{}<\/span>\n    <span class=\"n\">pauseChan<\/span>    <span class=\"k\">chan<\/span> <span class=\"k\">struct<\/span><span class=\"p\">{}<\/span>\n    <span class=\"n\">shutdownChan<\/span> <span class=\"k\">chan<\/span> <span class=\"k\">struct<\/span><span class=\"p\">{}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D9%84%DA%AF%D9%88%DB%8C_%DA%AF%D8%B2%DB%8C%D9%86%D9%87_%D9%87%D8%A7%DB%8C_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C\"><\/span>\n<p>  \u0627\u0644\u06af\u0648\u06cc \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Functional Options \u06cc\u06a9 \u0627\u0644\u06af\u0648\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0646 \u0634\u062e\u0635\u0627 \u0627\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0644\u0630\u062a \u0645\u06cc \u0628\u0631\u0645.  VIOLIN \u0627\u0632 \u0627\u0644\u06af\u0648\u06cc \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 \u0633\u0647 \u06af\u0632\u06cc\u0646\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0631\u0627 \u0628\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0645\u0631\u0628\u0648\u0637\u0647 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u062f\u060c \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u062c\u062f\u0648\u0644 \u0632\u06cc\u0631 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"table-wrapper-paragraph\">\n<table>\n<thead>\n<tr>\n<th>\u06af\u0632\u06cc\u0646\u0647<\/th>\n<th>\u067e\u06cc\u0634 \u0641\u0631\u0636<\/th>\n<th>\u0634\u0631\u062d<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>WithMaxWorkers<\/code><\/td>\n<td><code>5<\/code><\/td>\n<td>\u062d\u062f\u0627\u06a9\u062b\u0631 \u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/td>\n<\/tr>\n<tr>\n<td><code>WithWaitingQueueSize<\/code><\/td>\n<td><code>64<\/code><\/td>\n<td>\u0627\u0646\u062f\u0627\u0632\u0647 \u0635\u0641 \u0627\u0646\u062a\u0638\u0627\u0631 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/td>\n<\/tr>\n<tr>\n<td><code>WithWorkerIdleTimeout<\/code><\/td>\n<td><code>time.Second * 3<\/code><\/td>\n<td>\u0628\u0627\u0632\u0647 \u0632\u0645\u0627\u0646\u06cc \u062a\u062e\u0631\u06cc\u0628 \u0634\u062f\u0647 \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u0628\u06cc\u06a9\u0627\u0631 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<ul>\n<li>\u062f\u0631 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0628\u0627 2 \u062b\u0627\u0646\u06cc\u0647 \u062b\u0627\u0628\u062a <code>idleTimeout<\/code> \u062f\u0631 Workerpool\u060c VIOLIN \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u06cc\u0646 \u0627\u0645\u06a9\u0627\u0646 \u0631\u0627 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u0645\u0637\u0627\u0628\u0642 \u0628\u0627 \u0646\u06cc\u0627\u0632 \u062e\u0648\u062f \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u0646\u062f.<\/li>\n<li>\u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c VIOLIN \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u0627\u062f\u0647 \u0635\u0641 \u06a9\u0634 \u0648\u0638\u06cc\u0641\u0647 \u0631\u0627 \u0628\u0627 \u06a9\u0627\u0646\u0627\u0644 \u0647\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0627\u06cc\u062f \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0646\u0627\u0644 \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u0646\u062f \u06cc\u0627 \u0627\u0632 \u0645\u0642\u062f\u0627\u0631 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0646\u062f.  \u062f\u0631 \u0622\u06cc\u0646\u062f\u0647\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0647 \u0627\u062c\u0631\u0627\u06cc \u0635\u0641 \u0628\u0631\u06af\u0631\u062f\u062f \u0648 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0627\u0646\u062f\u0627\u0632\u0647 \u0635\u0641 \u06a9\u0634 \u0631\u0627 \u0627\u0632 \u0628\u06cc\u0646 \u0628\u0628\u0631\u062f.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D9%88%D8%B6%D8%B9%DB%8C%D8%AA\"><\/span>\n<p>  \u0648\u0636\u0639\u06cc\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0648\u06cc\u0648\u0644\u0646 \u062d\u0641\u0638 \u0645\u06cc \u06a9\u0646\u062f <code>status<\/code> \u0632\u0645\u06cc\u0646\u0647 \u062f\u0631 \u0633\u0627\u062e\u062a\u0627\u0631 \u0627\u0635\u0644\u06cc \u0628\u0631\u0627\u06cc \u062a\u0633\u0647\u06cc\u0644 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0648 \u0627\u062c\u0632\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u062f\u0631 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc VIOLIN.  \u0686\u0647\u0627\u0631 \u062d\u0627\u0644\u062a \u0645\u0645\u06a9\u0646 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">const<\/span> <span class=\"p\">(<\/span>\n    <span class=\"n\">_<\/span> <span class=\"kt\">uint32<\/span> <span class=\"o\">=<\/span> <span class=\"no\">iota<\/span>\n    <span class=\"n\">statusInitialized<\/span>\n    <span class=\"n\">statusPlaying<\/span>\n    <span class=\"n\">statusCleaning<\/span>\n    <span class=\"n\">statusShutdown<\/span>\n<span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\n<strong>statusInitialized<\/strong>: \u062d\u0627\u0644\u062a \u0627\u0648\u0644\u06cc\u0647<\/li>\n<li>\n<strong>\u0648\u0636\u0639\u06cc\u062a \u062f\u0631 \u062d\u0627\u0644 \u067e\u062e\u0634<\/strong>: \u0648\u06cc\u0648\u0644\u0646 \u0628\u0647 \u0637\u0648\u0631 \u0639\u0627\u062f\u06cc \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f<\/li>\n<li>\n<strong>\u0648\u0636\u0639\u06cc\u062a \u062a\u0645\u06cc\u0632 \u06a9\u0631\u062f\u0646<\/strong>: \u0628\u0639\u062f \u0627\u0632 \u062a\u0645\u0627\u0633 <code>ShutdownWait<\/code>\u060c VIOLIN \u0645\u0646\u062a\u0638\u0631 \u0627\u0633\u062a \u062a\u0627 \u06a9\u0627\u0631\u0647\u0627\u06cc \u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f\u0647 \u062f\u0631 \u0635\u0641 \u06a9\u0634 \u0648\u0638\u06cc\u0641\u0647 \u062a\u06a9\u0645\u06cc\u0644 \u0634\u0648\u062f.<\/li>\n<li>\n<strong>\u0648\u0636\u0639\u06cc\u062a \u062e\u0627\u0645\u0648\u0634 \u0634\u062f\u0646<\/strong>: \u0648\u06cc\u0648\u0644\u0646 \u062e\u0627\u0645\u0648\u0634 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<\/ul>\n<p>\u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0648\u0634 \u0647\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u0648\u0636\u0639\u06cc\u062a \u0648\u06cc\u0648\u0644\u0646 \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0646\u0646\u062f: <code>IsPlaying<\/code>\u060c <code>IsCleaning<\/code>\u060c \u0648 <code>IsShutdown<\/code>.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%B4%DA%A9%D9%84_%D9%85%D9%88%D8%A7%D8%AC%D9%87_%D8%B4%D8%AF\"><\/span>\n<p>  \u0645\u0634\u06a9\u0644 \u0645\u0648\u0627\u062c\u0647 \u0634\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u0634\u06a9\u0644 \u0632\u06cc\u0631 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0646\u0648\u0634\u062a\u0646 \u0648\u06cc\u0648\u0644\u0646 \u0628\u0627 \u0622\u0646 \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u0645.  \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0633\u0627\u0626\u0644 \u0646\u0627\u0634\u06cc \u0627\u0632 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f \u0645\u0646\u0637\u0642 \u0648 \u06af\u0645 \u0634\u062f\u0646 \u062f\u0631 \u0627\u0641\u06a9\u0627\u0631 \u062e\u0648\u062f\u0645 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0646\u062c\u0631 \u0628\u0647 \u0645\u0634\u06a9\u0644\u0627\u062a \u0645\u062e\u062a\u0644\u0641 \u0647\u0645\u0632\u0645\u0627\u0646\u06cc \u0648 \u06af\u0631\u062f\u0634 \u06a9\u0627\u0631 \u0645\u06cc \u0634\u0648\u062f.  \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0647 \u062e\u0637\u0627\u0647\u0627\u06cc &#8220;\u0627\u0631\u0633\u0627\u0644 \u062f\u0631 \u06a9\u0627\u0646\u0627\u0644 \u0628\u0633\u062a\u0647&#8221; \u0648 \u0645\u0633\u0627\u0628\u0642\u0647 \u062f\u0627\u062f\u0647 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0631\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">if<\/span> <span class=\"kt\">int<\/span><span class=\"p\">(<\/span><span class=\"n\">v<\/span><span class=\"o\">.<\/span><span class=\"n\">WorkerNum<\/span><span class=\"p\">())<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">v<\/span><span class=\"o\">.<\/span><span class=\"n\">MaxWorkerNum<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"n\">_<\/span> <span class=\"o\">=<\/span> <span class=\"n\">atomic<\/span><span class=\"o\">.<\/span><span class=\"n\">AddUint32<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">v<\/span><span class=\"o\">.<\/span><span class=\"n\">workerNum<\/span><span class=\"p\">,<\/span> <span class=\"m\">1<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">go<\/span> <span class=\"n\">v<\/span><span class=\"o\">.<\/span><span class=\"n\">recruit<\/span><span class=\"p\">(<\/span><span class=\"n\">wg<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0645\u0646\u0637\u0642 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u06a9\u0627\u0631\u06af\u0631 \u062c\u062f\u06cc\u062f \u0632\u0645\u0627\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062a\u0639\u062f\u0627\u062f \u0641\u0639\u0644\u06cc \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u06a9\u0645\u062a\u0631 \u0627\u0632 \u062d\u062f\u0627\u06a9\u062b\u0631 \u0645\u0642\u062f\u0627\u0631 \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f.  \u062f\u0631 \u0646\u0633\u062e\u0647 \u0627\u0648\u0644\u06cc\u0647 \u06a9\u062f\u060c \u06a9\u062f\u06cc \u06a9\u0647 \u0628\u0647 \u062a\u062f\u0631\u06cc\u062c \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u06cc \u06cc\u0627\u0628\u062f <code>workerNum<\/code> \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0639\u0645\u0644\u06cc\u0627\u062a \u0627\u062a\u0645\u06cc \u062f\u0631 \u062f\u0627\u062e\u0644 \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a <code>recruit<\/code> \u062a\u0627\u0628\u0639.  \u0627\u06cc\u0646 \u0628\u0627\u0639\u062b \u0634\u062f \u06a9\u0647 \u062a\u0639\u062f\u0627\u062f \u0648\u0627\u0642\u0639\u06cc \u06a9\u0627\u0631\u06af\u0631\u0627\u0646 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0686\u0646\u062f\u06cc\u0646 \u0628\u0631\u0627\u0628\u0631 \u0627\u0632 \u062d\u062f\u0627\u06a9\u062b\u0631 \u0645\u0642\u062f\u0627\u0631 \u0628\u06cc\u0634\u062a\u0631 \u0634\u0648\u062f.  \u0628\u0639\u062f \u0627\u0632 \u0645\u062f\u062a\u06cc \u062c\u0633\u062a\u062c\u0648 \u0645\u062a\u0648\u062c\u0647 \u0634\u062f\u0645 \u06a9\u0647 \u0645\u0648\u0636\u0648\u0639 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u062d\u06a9\u0645 \u0627\u0639\u062f\u0627\u0645 \u0628\u0648\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0631\u0627\u0647 \u062d\u0644 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 <strong>\u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u067e\u0633 \u0627\u0632 \u0628\u0631\u0631\u0633\u06cc \u0634\u0631\u0637\u06cc \u0645\u0642\u062f\u0627\u0631 \u0631\u0627 \u0627\u0641\u0632\u0627\u06cc\u0634 \u062f\u0647\u06cc\u062f<\/strong>.  \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a\u060c \u0686\u0648\u0646 \u062d\u0644\u0642\u0647 \u0633\u0631\u06cc\u0639\u062a\u0631 \u0627\u0632 \u0634\u0631\u0648\u0639 \u06cc\u06a9 \u06af\u0648\u0631\u0648\u062a\u06cc\u0646 \u0648 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u0642\u062f\u0627\u0631 \u0627\u062a\u0645\u06cc \u062f\u0631 \u062f\u0627\u062e\u0644 <code>recruit<\/code> \u062a\u0627\u0628\u0639\u060c \u0686\u0646\u062f\u06cc\u0646 \u06af\u0648\u0631\u0648\u062a\u06cc\u0646 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0628\u0631\u0631\u0633\u06cc \u0634\u0631\u0637\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87\"><\/span>\n<p>  \u0646\u062a\u06cc\u062c\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u06a9\u0647 \u062a\u0645\u0627\u0645 \u0645\u062d\u062a\u0648\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0631\u0627 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0645\u06cc \u0631\u0633\u0627\u0646\u062f.  \u0645\u0627 \u0628\u0627 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0633\u0627\u062e\u062a \u06cc\u06a9 Worker Pool \u0634\u0631\u0648\u0639 \u06a9\u0631\u062f\u06cc\u0645\u060c \u0633\u067e\u0633 \u06cc\u06a9 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u0646\u0628\u0639 \u0628\u0627\u0632 \u06cc\u06a9 Worker Pool \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a Worker Pool \u062e\u0648\u062f\u0645\u0627\u0646 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0631\u062f\u06cc\u0645.  \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u0627\u06cc\u0646 \u0645\u0637\u0644\u0628 \u062f\u0631 \u062f\u0631\u06a9 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0645\u0627 \u0627\u0632 Worker Pools \u0645\u0641\u06cc\u062f \u0628\u0648\u062f\u0647 \u0628\u0627\u0634\u062f.  \u062f\u0631 \u0635\u0648\u0631\u062a \u0648\u062c\u0648\u062f \u0647\u0631 \u06af\u0648\u0646\u0647 \u0627\u0634\u062a\u0628\u0627\u0647 \u06cc\u0627 \u0633\u0648\u0627\u0644\u060c \u0644\u0637\u0641\u0627\u064b \u0646\u0638\u0631\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u0628\u06cc\u0627\u0646 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u067e\u06cc\u0627\u0645 \u062e\u0635\u0648\u0635\u06cc \u062f\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%81%D9%87%D8%B1%D8%B3%D8%AA_%D9%85%D8%B1%D8%AC%D8%B9\"><\/span>\n<p>  \u0641\u0647\u0631\u0633\u062a \u0645\u0631\u062c\u0639<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u0639\u0631\u0641\u06cc \u0627\u062f\u063a\u0627\u0645 \u06cc\u06a9 \u062a\u06a9\u0646\u06cc\u06a9 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u0646\u0627\u0628\u0639 \u0627\u0633\u062a \u06a9\u0647 \u0634\u0627\u0645\u0644 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0627\u06cc \u0627\u0632 \u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc \u0645\u0646\u0627\u0628\u0639 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0627\u0633\u062a \u06a9\u0647 \u0627\u0645\u06a9\u0627\u0646 \u062a\u062e\u0635\u06cc\u0635 \u0648 \u062a\u062e\u0635\u06cc\u0635 \u0633\u0631\u06cc\u0639 \u0627\u06cc\u0646 \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u06af\u0648\u0631\u0648\u062a\u06cc\u0646 \u0647\u0627 \u062f\u0631 \u0632\u0628\u0627\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc Go\u060c &#8220;\u0631\u0634\u062a\u0647 \u0647\u0627\u06cc&#8221; \u0633\u0628\u06a9 \u0648\u0632\u0646 \u0647\u0633\u062a\u0646\u062f\u060c \u0627\u0645\u0627 \u062a\u0639\u062f\u0627\u062f \u0632\u06cc\u0627\u062f\u06cc \u0627\u0632 \u06af\u0648\u0631\u0648\u062a\u06cc\u0646 \u0647\u0627 \u0647\u0645\u0686\u0646\u0627\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f &hellip;<\/p>\n","protected":false},"author":2,"featured_media":27050,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-27049","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/27049","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=27049"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/27049\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/27050"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=27049"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=27049"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=27049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}