{"id":330261,"date":"2022-03-02T15:00:06","date_gmt":"2022-03-02T15:00:06","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=330261"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=330261","title":{"rendered":"<span>\u041e Thread \u0438 ThreadPool \u0432 .NET \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e (\u0447\u0430\u0441\u0442\u044c 2)<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412 <a href=\"https:\/\/habr.com\/ru\/post\/654101\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438<\/a> \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438 \u043f\u0443\u043b\u043e\u0432 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438 \u0433\u043e\u0442\u043e\u0432\u044b \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u0438 \u043d\u0430\u0439\u0434\u0451\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0451\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u043b\u044f \u043f\u0443\u043b\u0430 \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u0427\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u043d\u0435 \u0434\u0430\u0432\u043b\u0435\u043b\u0438 \u043d\u0430\u0434 \u043e\u0431\u044a\u0451\u043c\u043e\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b<\/p>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442 SmartThreadPool, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0434\u0451\u0442 \u0440\u0435\u0447\u044c \u0432 \u0441\u0442\u0430\u0442\u044c\u0435: <\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/sidristij\/threading-kit\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/sidristij\/threading-kit<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u26a0\ufe0f\u00a0<em>\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438<\/em> <\/p>\n<p>\u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442, \u0447\u0442\u043e \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0432\u043b\u0438\u044f\u0435\u0442\u00a0<strong>\u0433\u0440\u0430\u043d\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b<\/strong>. \u0418\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u0432\u0438\u0434\u0443, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u043e\u0432. \u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439, \u0433\u0440\u0430\u043d\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0430\u0431\u044b \u043a\u0430\u043a\u043e\u0439: \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c\u00a0<em>\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439<\/em>. \u0418 \u043f\u043e\u043c\u0438\u043c\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447 \u043d\u0430 ThreadPool, \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0447\u0435\u0440\u0435\u0437 TPL \u0442\u0430\u043a \u0438 \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u043b \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u0437\u044f\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 ThreadPool, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u044c \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 ThreadPool \u0432 \u0442\u0430\u043a\u0442\u0430\u0445 Time Stamp Counter \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u043c\u043e\u0436\u043d\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0438 \u0432 \u0447\u0451\u043c-\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u043c \u0442\u0438\u043f\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434, \u043d\u043e \u0442\u0430\u043c \u043d\u0430 \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u0445 \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0443\u043b\u0438)  <\/p>\n<pre><code class=\"cs\">ConcurrentQueue&lt;Record> bag = new ConcurrentQueue&lt;UserQuery.Record>(); unsafe delegate*&lt;long> rdtsc; long rdtscCallCost; long[] lastValues = new long[100];  unsafe void Main() { rdtsc = CreateRdtscMethod(); var rdtsc_costs = new List&lt;long>(10000);  for(int i = 0; i &lt; 10000; i++) { rdtsc_costs.Add(Math.Abs(rdtsc()-rdtsc())); }  rdtscCallCost = (long)rdtsc_costs.Average();  for(int i = 0; i &lt; 1_000_000; i++) { ThreadPool.QueueUserWorkItem(TraceWork, bag); }  Console.Read(); bag.Dump(); }  unsafe void TraceWork(object x) { var rd = rdtsc(); var tid = Environment.CurrentManagedThreadId; var last = lastValues[tid];  bag.Enqueue(new Record {  Ticks = rd - last - rdtscCallCost, TID = Environment.CurrentManagedThreadId });  lastValues[tid] = rdtsc(); }  struct Record { public long Ticks; public int TID; }  unsafe static delegate*&lt;long> CreateRdtscMethod() { var ptr = VirtualAlloc(IntPtr.Zero, (uint)rdtscAsm.Length, MEM_COMMIT, PAGE_EXECUTE_READWRITE); Marshal.Copy(rdtscAsm, 0, ptr, rdtscAsm.Length); return (delegate*&lt;long>)ptr; }  const uint PAGE_EXECUTE_READWRITE = 0x40; const uint MEM_COMMIT = 0x1000;  [DllImport(\"kernel32.dll\", SetLastError = true)] static extern IntPtr VirtualAlloc( IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect);  static readonly byte[] rdtscAsm = { 0x0F, 0x31, \/\/ rdtsc     0xC3        \/\/ ret }; <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u00a0<code>CreateRdtscMethod<\/code>\u00a0\u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0443 Windows \u0438 \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u043c \u0435\u0451 \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u0443\u044e \u043a \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u043a\u043e\u0434\u0430. \u041c\u0435\u0442\u043e\u0434 \u044d\u0442\u043e\u0442 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u0432 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u00a0<code>rdtscAsm<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0432\u044b\u0437\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438\u00a0<code>rdtsc<\/code>\u00a0\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0432 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u043a\u043e\u0434. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 \u043a \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e \u043d\u0430 \u043c\u0435\u0442\u043e\u0434 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c .NET \u043c\u0435\u0442\u043e\u0434 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 asm \u043a\u043e\u0434\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 CPU \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438\u00a0<code>rdtsc<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u0447\u0451\u0442\u0447\u0438\u043a TSC (Time Stamp Counter) \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 EDX:EAX 64-\u0431\u0438\u0442\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0441\u0431\u0440\u043e\u0441\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430. \u0421\u0442\u0430\u0440\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0447\u0438\u0441\u043b\u0430 \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u0430, \u0442.\u043a. \u043c\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u043c\u00a0<strong>\u0440\u0430\u0437\u043d\u0438\u0446\u0443<\/strong>, \u0430 \u043f\u043e\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 2-\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430\u00a0<code>rdtsc()<\/code>\u00a0\u0434\u0430\u0441\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u044b \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0432 \u043f\u0443\u043b \u043e\u0434\u0438\u043d \u043c\u0438\u043b\u043b\u0438\u043e\u043d \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u00a0<code>ConcurrentQueue<\/code>\u00a0\u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043a\u0443\u0449\u0438\u043c\u00a0<code>rdtsc<\/code>\u00a0\u0438 \u043f\u0440\u043e\u0448\u043b\u044b\u043c \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435. \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0442\u043e\u043a\u0430 \u0432\u0430\u0436\u043d\u043e, \u0442.\u043a. \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0434\u0440\u0430\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430.<\/p>\n<blockquote>\n<p>\u0418\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435, \u0438\u0434\u0443\u0449\u0438\u0435 \u043c\u0438\u043c\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438, \u043f\u0440\u043e\u0431\u0435\u043b\u044b. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0442\u043e\u043a \u0431\u044b\u043b \u043f\u0440\u0435\u0440\u0432\u0430\u043d \u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u044f\u0434\u0440\u0435 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0438, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u0430\u0436\u0435 \u043d\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<\/blockquote>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043c\u0435\u0440\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043f\u0443\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0430\u043b \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443, \u043e\u043d \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b \u043d\u0430 1 \u043f\u043e\u0442\u043e\u043a\u0435 \u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u0431\u044f \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u044b \u0441 \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438 \u043d\u0430 \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0440\u0430\u0432\u043d\u044b\u043c\u0438\u00a0<code>100-200<\/code>\u00a0\u0442\u0430\u043a\u0442\u043e\u0432. \u0414\u0430\u043b\u0435\u0435, \u043f\u043e \u043c\u0435\u0440\u0435 \u0440\u043e\u0441\u0442\u0430 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u0430 \u043f\u0443\u043b\u0430 \u0440\u0430\u0441\u0442\u0451\u0442 \u0438 \u0446\u0435\u043d\u0430 \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a: \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u043c\u0435\u0442\u043a\u0443\u00a0<code>200-300<\/code>\u00a0\u043e\u043d\u0430 \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e\u00a0<code>500-900<\/code>\u00a0\u0442\u0430\u043a\u0442\u043e\u0432. \u0415\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0435\u00a0<code>1500-2500<\/code>\u00a0\u0442\u0430\u043a\u0442\u043e\u0432 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442\u0441\u044f, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0432\u0437\u044f\u0442\u044c \u0434\u0435\u043b\u0435\u0433\u0430\u0442 \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044e\u0442 \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u044b, \u0430 \u0442\u043e\u0442, \u0447\u0442\u043e\u00a0<em>\u043f\u0440\u0438\u0442\u043e\u0440\u043c\u043e\u0437\u0438\u043b<\/em>\u00a0\u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0431\u043e\u0440\u0435\u0442\u0441\u044f \u0437\u0430 \u0441\u043c\u0435\u043d\u0443 &#171;\u0445\u0432\u043e\u0441\u0442\u0430&#187; \u043e\u0447\u0435\u0440\u0435\u0434\u0438.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0447\u0435\u0440\u0435\u0434\u0443\u044e\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b (<code>40<\/code>\u00a0\u0442\u0430\u043a\u0442\u043e\u0432) \u0438 \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0443\u043b\u043e\u043c (\u043f\u0443\u0441\u0442\u044c,\u00a0<code>800<\/code>\u00a0\u0442\u0430\u043a\u0442\u043e\u0432). \u0415\u0441\u043b\u0438 \u0443\u0447\u0435\u0441\u0442\u044c, \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u0438\u0434\u0451\u0442 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c, \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u043a \u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442. \u0415\u0441\u043b\u0438 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438 \u043d\u0430 8 \u043f\u043e\u0442\u043e\u043a\u0430\u0445 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0443 \u043e\u0434\u043d\u043e\u0433\u043e &#8212; \u0432\u044b\u0431\u043e\u0440 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u0430, \u0442\u043e \u0442\u043e\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u0442 \u0432\u044b\u0431\u043e\u0440 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e, \u0442.\u043a. \u043d\u0438 \u0441 \u043a\u0435\u043c \u043d\u0435 \u0441\u043e\u043f\u0435\u0440\u043d\u0438\u0447\u0430\u0435\u0442. \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u0438\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0443\u0436\u0435 \u0434\u0432\u0430, \u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0441\u043f\u043e\u0440 \u0437\u0430 \u043e\u0431\u0449\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441: \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u043e\u0432. \u0415\u0441\u043b\u0438 \u0442\u0440\u0438, \u0441\u043f\u043e\u0440 \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u0438 \u043e\u0442 \u0442\u043e\u0433\u043e &#8212; \u0434\u043e\u043b\u044c\u0448\u0435 (\u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0443\u0442 \u043e\u043d, \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430, \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u0432\u00a0<code>500<\/code>\u00a0\u0442\u0430\u043a\u0442\u043e\u0432). \u0415\u0441\u043b\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u0430, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442? \u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u043f\u043e\u0440\u0430. \u0414\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u0441\u043f\u043e\u0440\u0430 \u0440\u0430\u0441\u0442\u0451\u0442. \u041f\u0443\u043b \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0447\u0438\u0442\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0437\u043a\u043e \u043f\u0430\u0434\u0430\u0435\u0442, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u042d\u0442\u043e \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043f\u043e\u0440 \u0437\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044f \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044e \u0441\u043f\u043e\u0440\u0430. \u0412 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0451\u0442\u0435 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439, \u0447\u0442\u043e \u0432 \u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f 1 \u043f\u043e\u0442\u043e\u043a. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 &#8212; \u0441\u043f\u043e\u0440\u044f\u0442, \u043a\u0442\u043e \u0437\u0430\u0431\u0435\u0440\u0451\u0442 \u0441 \u043d\u0435\u0451 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u043d\u0430\u0448\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u043e\u0447\u0435\u043d\u044c \u043a\u043e\u0440\u043e\u0442\u043a\u0430\u044f \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 40 \u0442\u0430\u043a\u0442\u043e\u0432 (\u043a\u0430\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043c\u0435\u0442\u043e\u0434\u0430\u00a0<code>TraceWork<\/code>), \u0442\u043e \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u0434\u043b\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0434\u0430\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u0448\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u0442\u043e\u0438\u0442\u044c\u00a0<code>1250% - 2000%<\/code>\u00a0\u043e\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0435\u043c \u043d\u0430 ThreadPool. \u041e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044f\u0441\u044c \u043e\u0442 \u044d\u0442\u0438\u0445 \u0446\u0438\u0444\u0440 \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u0435\u043b\u043e \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0431\u0440\u0430\u0442\u044c \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u0437\u0430\u00a0<code>200-300<\/code>\u00a0\u0442\u0430\u043a\u0442\u043e\u0432, \u0430 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0443\u043c\u0435\u0440\u0435\u043d\u043d\u043e-\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438, \u0438 \u0435\u0441\u043b\u0438 \u0432\u0437\u044f\u0442\u044c \u0438\u0445 \u0437\u0430 5%, \u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0435 \u043c\u0435\u043d\u044c\u0448\u0435\u00a0<code>(250 \/ 5 * 95) = 4750<\/code>\u00a0\u0442\u0430\u043a\u0442\u043e\u0432. \u0422.\u0435. \u043a\u043e\u0434\u0430 \u0432 \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e. \u041d\u043e \u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043e\u043d\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c, \u0432 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0435\u043c ThreadPool, \u0442.\u043a. \u043e\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0449\u0438\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c.<\/p>\n<p>\u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0436\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0445\u043e\u0439. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f 1 \u043c\u043b\u043d \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u043e\u0432 \u0432 ThreadPool \u043d\u0430 6 (12 HyperThreading) \u044f\u0434\u0440\u0430\u0445. \u0422.\u0435. 24 \u043f\u043e\u0442\u043e\u043a\u0430\u0445 ThreadPool:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/972\/772\/210\/97277221057b7414896be5b5333e6f03.png\" alt=\"\u041f\u0435\u0440\u0432\u0430\u044f 1,000 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439: \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0443\u043b \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u0438\u043d\u044f\u043b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0437\u043a\u043e\u043c\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\" title=\"\u041f\u0435\u0440\u0432\u0430\u044f 1,000 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439: \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0443\u043b \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u0438\u043d\u044f\u043b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0437\u043a\u043e\u043c\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\" width=\"1275\" height=\"648\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/972\/772\/210\/97277221057b7414896be5b5333e6f03.png\"\/><figcaption>\u041f\u0435\u0440\u0432\u0430\u044f 1,000 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439: \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0443\u043b \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u0438\u043d\u044f\u043b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0437\u043a\u043e\u043c\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e<\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/546\/9c4\/63d\/5469c463d56fd3dfccb9d436d4914ade.png\" alt=\"\u0412\u0435\u0441\u044c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439: \u0434\u0430\u043b\u0435\u0435 \u043f\u0443\u043b \u043f\u0440\u0438\u043d\u044f\u043b \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u0435\u0437\u043a\u043e \u0443\u0445\u0443\u0434\u0448\u0438\u043b\u043e\u0441\u044c\" title=\"\u0412\u0435\u0441\u044c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439: \u0434\u0430\u043b\u0435\u0435 \u043f\u0443\u043b \u043f\u0440\u0438\u043d\u044f\u043b \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u0435\u0437\u043a\u043e \u0443\u0445\u0443\u0434\u0448\u0438\u043b\u043e\u0441\u044c\" width=\"1134\" height=\"503\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/546\/9c4\/63d\/5469c463d56fd3dfccb9d436d4914ade.png\"\/><figcaption>\u0412\u0435\u0441\u044c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439: \u0434\u0430\u043b\u0435\u0435 \u043f\u0443\u043b \u043f\u0440\u0438\u043d\u044f\u043b \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u0435\u0437\u043a\u043e \u0443\u0445\u0443\u0434\u0448\u0438\u043b\u043e\u0441\u044c<\/figcaption><\/figure>\n<p>\u0418 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043c &#171;\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u043d\u043e\u0435&#187; \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u043c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0437 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0432\u044b\u0448\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430 \u043a\u0430\u043a\u0438\u0435 50-\u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u043f\u0443\u043b\u0430. \u0417\u0430\u043c\u0435\u0440\u044b \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043c \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0432 \u043b\u0435\u0433\u0435\u043d\u0434\u0435 \u0434\u043b\u0438\u043d \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430 &#171;\u0440\u0430\u0431\u043e\u0442\u044b&#187; \u043c\u0435\u0442\u043e\u0434\u0430, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0432 \u043f\u0443\u043b \u043f\u043e\u0442\u043e\u043a\u043e\u0432:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0f8\/d9a\/80a\/0f8d9a80a02a41b8fe2ce77e75c88726.png\" width=\"1645\" height=\"507\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0f8\/d9a\/80a\/0f8d9a80a02a41b8fe2ce77e75c88726.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041a\u0430\u0436\u0434\u0430\u044f \u043a\u0440\u0438\u0432\u0430\u044f &#8212; \u044d\u0442\u043e \u0433\u0440\u0430\u0444\u0438\u043a \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u043d\u044b \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430. \u0411\u043e\u043b\u0435\u0435 \u0431\u043b\u0435\u043a\u043b\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 &#8212; \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0446\u0438\u043a\u043b\u044b \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e &#8212; \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u043f\u0443\u043b\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 &#171;\u0443\u0445\u043e\u0434\u044f\u0442 \u0432\u043f\u0440\u0430\u0432\u043e&#187; \u043f\u043e \u043e\u0441\u0438 \u0430\u0431\u0441\u0446\u0438\u0441\u0441. \u0422.\u0435. \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e (\u0435\u0441\u043b\u0438 \u0432\u0441\u0451 \u0441\u043b\u043e\u0436\u0438\u0442\u044c) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u0437\u043e\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 ThreadPool: \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439, \u043a\u043e\u0433\u0434\u0430 \u043c\u0435\u0436\u0434\u0443 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u043d\u0430 \u043f\u043e\u0442\u043e\u043a\u0435 \u043f\u0443\u043b\u0430 \u0438 \u0432\u0437\u044f\u0442\u0438\u0435\u043c \u0432 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0423\u0432\u0435\u043b\u0438\u0447\u0438\u043c \u0431\u043e\u043b\u0435\u0435 \u0437\u043d\u0430\u0447\u0438\u043c\u0443\u044e \u0447\u0430\u0441\u0442\u044c:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b99\/557\/755\/b9955775537d8aedae55f0d9ba4c8549.png\" width=\"1510\" height=\"580\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b99\/557\/755\/b9955775537d8aedae55f0d9ba4c8549.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u0447\u0442\u043e \u043d\u0430 \u043c\u0430\u043b\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043b\u043e\u0436\u0430\u0442\u0441\u044f \u0431\u043b\u0438\u0436\u0435 \u043a \u043f\u0438\u043a\u043e\u0432\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c. \u0417\u0430\u0442\u0435\u043c \u043f\u0438\u043a\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0443, \u0437\u0430\u0442\u0435\u043c \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u043e \u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0441\u043d\u043e\u0432\u0430 \u043d\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0445\u0443\u0434\u0448\u0435\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0440\u0430\u0439\u043d\u0435 \u043f\u043b\u043e\u0445\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u043e\u0432 \u043a\u0440\u0430\u0439\u043d\u0435 \u0432\u044b\u0441\u043e\u043a\u0430. \u041f\u043b\u044e\u0441 \u043a\u043e \u0432\u0441\u0435\u043c\u0443 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0431\u044a\u0435\u043c \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a \u0443\u0445\u043e\u0434\u0438\u0442 &#171;\u0445\u0432\u043e\u0441\u0442\u043e\u043c&#187; \u0432\u043f\u0440\u0430\u0432\u043e (\u0441\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u0433\u0440\u0430\u0444\u0438\u043a),\u00a0<em>\u0441\u0440\u0435\u0434\u043d\u044f\u044f<\/em>\u00a0\u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043c\u0435\u0449\u0435\u043d\u0430 \u0432\u043f\u0440\u0430\u0432\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043b\u0435\u0431\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0439\u043e\u043d\u0435 600 \u0442\u0430\u043a\u0442\u043e\u0432 \u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e.<\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0435, \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u044f\u0441\u043d\u0438\u0442\u044c: \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d\u044b \u0431\u043e\u0440\u044c\u0431\u043e\u0439 \u0437\u0430 \u0440\u0435\u0441\u0443\u0440\u0441. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 &#8212; \u0437\u0430 \u0433\u043e\u043b\u043e\u0432\u0443 \u0438 \u0445\u0432\u043e\u0441\u0442 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u0434\u0430\u0447. \u0410 \u043f\u043e\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d\u044b \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u0430. \u0422\u0440\u0438 \u043f\u0438\u043a\u0430 &#8212; \u044d\u0442\u043e \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0431\u043e\u0440\u044c\u0431\u044b \u0437\u0430 \u043e\u0431\u0449\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441. \u0410 \u0442\u043e \u0447\u0442\u043e \u0438\u0445 \u0447\u0451\u0442\u043a\u043e \u0442\u0440\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0443\u043b \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0442\u0440\u0438 \u0440\u0430\u0437\u0430: \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0438 \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0431\u044a\u0451\u043c\u0430\u0445 \u0440\u0430\u0431\u043e\u0442. \u041f\u0440\u0438\u0447\u0451\u043c \u0434\u0435\u043b\u0435\u043b \u044d\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0447\u0435\u0440\u0435\u0437 \u0442\u0435 \u0436\u0435 \u0447\u0438\u0441\u043b\u0430 \u0443\u0440\u043e\u0432\u043d\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u0430.<\/p>\n<p>\u041d\u043e \u043e\u0431\u043e \u0432\u0441\u0451\u043c \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443.<\/p>\n<h2>\u0418\u0449\u0435\u043c \u0438\u0434\u0435\u0430\u043b<\/h2>\n<blockquote>\n<p> \u2620\ufe0f\u00a0<em>\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438<\/em>  <\/p>\n<\/blockquote>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f ThreadPool&#8217;\u0430 \u0442\u0430\u043a \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c \u0432 \u043d\u0430\u0448\u0438 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e \u0445\u043e\u0440\u043e\u0448\u0435\u043c \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 \u043a\u043e\u0434\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 \u043a \u043a\u043e\u0434\u0443 \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u043f\u0443\u043b\u0430 5% \u043a 95%:  <\/p>\n<pre><code class=\"cs\">unsafe void TraceWork(object x) { var rd = rdtsc();  ulong sum = (ulong)rd; for (int i = 0; i &lt; 600; i++) { sum = sum + (ulong)i; } var end = rdtsc(); bag.Enqueue(new Record {  Ticks = end - rd - rdtscCallCost, TID = Environment.CurrentManagedThreadId }); }<\/code><\/pre>\n<p><code>Ticks<\/code>\u00a0\u0431\u0443\u0434\u0435\u0442 \u0432\u0430\u0440\u044c\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 4700 \u0442\u0430\u043a\u0442\u043e\u0432 (\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u0440\u044c\u0438\u0440\u0443\u0435\u0442\u0441\u044f). \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432\u0435\u0440\u043d\u0451\u043c \u043a\u043e\u0434 \u0434\u043b\u044f \u0437\u0430\u043c\u0435\u0440\u0430 \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u043f\u0443\u043b\u0430:  <\/p>\n<pre><code class=\"cs\">unsafe void TraceWork(object x) { var rd = rdtsc(); var tid = Environment.CurrentManagedThreadId; var last = lastValues[tid];  ulong sum = (ulong)rd; for (int i = 0; i &lt; 600; i++) { sum = sum + (ulong)i; }  bag.Enqueue(new Record {  Ticks = rd - last - rdtscCallCost, TID = Environment.CurrentManagedThreadId });  lastValues[tid] = rdtsc(); }<\/code><\/pre>\n<p>\u0427\u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c:  <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0d7\/7a0\/05b\/0d77a005b734c02bad5b481da6e7b4f4.png\" alt=\"\u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 5% \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u043a 95% \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435. \u041d\u0435 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e\" title=\"\u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 5% \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u043a 95% \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435. \u041d\u0435 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e\" width=\"959\" height=\"450\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0d7\/7a0\/05b\/0d77a005b734c02bad5b481da6e7b4f4.png\"\/><figcaption>\u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 5% \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u043a 95% \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435. \u041d\u0435 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e<\/figcaption><\/figure>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0442\u0440\u0430\u0448\u043d\u043e. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0438\u0445 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435: \u0442\u0430\u043a \u043b\u0438 \u043c\u043d\u043e\u0433\u043e &#171;\u043f\u0438\u043a\u043e\u0432\u044b\u0445&#187; \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a93\/2b3\/3af\/a932b33af4922e1f64bf84a5b4fb3fbe.png\" alt=\"\u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 5% \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u043a 95% \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435. \u041e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043f\u043e \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438\" title=\"\u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 5% \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u043a 95% \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435. \u041e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043f\u043e \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438\" width=\"954\" height=\"449\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a93\/2b3\/3af\/a932b33af4922e1f64bf84a5b4fb3fbe.png\"\/><figcaption>\u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 5% \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u043a 95% \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435. \u041e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043f\u043e \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438<\/figcaption><\/figure>\n<p>\u0418 \u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0434\u0440\u0430\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0434\u043e\u00a0<code>100_000<\/code>\u00a0\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439. \u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0441\u0442\u0430\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0440\u0430\u0432\u043d\u0430 87,000 \u0442\u0430\u043a\u0442\u0430\u043c, \u0447\u0442\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0431\u043e\u043b\u0435\u0435\u00a0<code>99%<\/code>\u00a0\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u044b (\u0438\u0441\u043b\u0438 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441 \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438). \u0422\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u0441\u0442\u0430\u043b\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043e\u043a\u043e\u043b\u043e 550 \u0442\u0430\u043a\u0442\u043e\u0432, \u0447\u0442\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0434\u0435\u0430\u043b:  <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/277\/a50\/9b4\/277a509b491d62fc79ad00e5f21257de.png\" width=\"909\" height=\"407\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/277\/a50\/9b4\/277a509b491d62fc79ad00e5f21257de.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u0438\u043c\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c\u0438 \u0438 \u043f\u0443\u043b\u0430\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u0430\u043a\u0438\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u0445, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0443\u0434\u0438\u0442\u044c \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430 (ThreadPool, .NET 5\/.NET 6 (\u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e))  <\/p>\n<h4>\u041b\u0435\u0433\u0435\u043d\u0434\u0430 \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c:<\/h4>\n<ul>\n<li>\n<p><strong>\u0418\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u0446\u0438\u043a\u043b\u0430<\/strong>: \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432 \u0442\u0435\u043b\u0435 TraceWork: \u043d\u0430 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u044b<\/p>\n<\/li>\n<li>\n<p><strong>\u0418\u0437\u0434\u0435\u0440\u0436\u043a\u0438, \u0442\u0430\u043a\u0442\u043e\u0432<\/strong>: \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u0443\u044e\u0442\u0441\u044f ThreadPool&#8217;\u043e\u043c \u043d\u0430 \u0432\u044b\u0431\u043e\u0440 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430<\/p>\n<\/li>\n<li>\n<p><strong>\u0420\u0430\u0431\u043e\u0442\u0430, \u0442\u0430\u043a\u0442\u043e\u0432<\/strong>: \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u0443\u0435\u0442\u0441\u044f \u0442\u0435\u043b\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0430 (\u0441 \u0446\u0438\u043a\u043b\u043e\u043c)<\/p>\n<\/li>\n<li>\n<p><strong>\u0426\u0435\u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0440\u0430\u0431\u043e\u0442\u044b<\/strong>: (\u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438+\u0440\u0430\u0431\u043e\u0442\u0430)\/\u043a\u043e\u043b-\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u0446\u0438\u043a\u043b\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>\u0412\u0440\u0435\u043c\u044f, \u043c\u0441<\/strong>: \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445, \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f<\/p>\n<\/li>\n<li>\n<p><strong>\u2211 \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a, \u043c\u0441<\/strong>: \u043e\u0431\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u043f\u043e \u0432\u0441\u0435\u043c \u043f\u043e\u0442\u043e\u043a\u0430\u043c<\/p>\n<\/li>\n<li>\n<p><strong>\u2211 \u0440\u0430\u0431\u043e\u0442\u044b, \u043c\u0441<\/strong>: \u043e\u0431\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e \u0432\u0441\u0435\u043c \u043f\u043e\u0442\u043e\u043a\u0430\u043c<\/p>\n<\/li>\n<\/ul>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p>\u0418\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u0446\u0438\u043a\u043b\u0430<\/p>\n<\/th>\n<th>\n<p>\u0418\u0437\u0434\u0435\u0440\u0436\u043a\u0438, \u0442\u0430\u043a\u0442\u043e\u0432<\/p>\n<\/th>\n<th>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430, \u0442\u0430\u043a\u0442\u043e\u0432<\/p>\n<\/th>\n<th>\n<p>\u0426\u0435\u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0440\u0430\u0431\u043e\u0442\u044b<\/p>\n<\/th>\n<th>\n<p>\u0418\u0437\u0434\u0435\u0440\u0436\u043a\u0438, %<\/p>\n<\/th>\n<th>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430, %<\/p>\n<\/th>\n<th>\n<p>\u0412\u0440\u0435\u043c\u044f,\u043c\u0441<\/p>\n<\/th>\n<th>\n<p>\u041f\u043e\u0442\u043e\u043a\u043e\u0432<\/p>\n<\/th>\n<th>\n<p>\u0418\u0437\u0434, \u0441\u0443\u043c, \u043c\u0441<\/p>\n<\/th>\n<th>\n<p>\u0420\u0430\u0431, \u0441\u0443\u043c, \u043c\u0441<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p>0<\/p>\n<\/td>\n<td>\n<p>600<\/p>\n<\/td>\n<td>\n<p>134<\/p>\n<\/td>\n<td>\n<p>?<\/p>\n<\/td>\n<td>\n<p>81,73<\/p>\n<\/td>\n<td>\n<p>18,27<\/p>\n<\/td>\n<td>\n<p>97<\/p>\n<\/td>\n<td>\n<p>12<\/p>\n<\/td>\n<td>\n<p>951,29<\/p>\n<\/td>\n<td>\n<p>212,71<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>5<\/p>\n<\/td>\n<td>\n<p>679<\/p>\n<\/td>\n<td>\n<p>225<\/p>\n<\/td>\n<td>\n<p>180,91<\/p>\n<\/td>\n<td>\n<p>75,12<\/p>\n<\/td>\n<td>\n<p>24,88<\/p>\n<\/td>\n<td>\n<p>85<\/p>\n<\/td>\n<td>\n<p>13<\/p>\n<\/td>\n<td>\n<p>830,08<\/p>\n<\/td>\n<td>\n<p>274,92<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>11<\/p>\n<\/td>\n<td>\n<p>640<\/p>\n<\/td>\n<td>\n<p>209<\/p>\n<\/td>\n<td>\n<p>77,30<\/p>\n<\/td>\n<td>\n<p>75,34<\/p>\n<\/td>\n<td>\n<p>24,66<\/p>\n<\/td>\n<td>\n<p>84<\/p>\n<\/td>\n<td>\n<p>12<\/p>\n<\/td>\n<td>\n<p>759,44<\/p>\n<\/td>\n<td>\n<p>248,56<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>51<\/p>\n<\/td>\n<td>\n<p>731<\/p>\n<\/td>\n<td>\n<p>850<\/p>\n<\/td>\n<td>\n<p>31,02<\/p>\n<\/td>\n<td>\n<p>46,22<\/p>\n<\/td>\n<td>\n<p>53,78<\/p>\n<\/td>\n<td>\n<p>76<\/p>\n<\/td>\n<td>\n<p>13<\/p>\n<\/td>\n<td>\n<p>456,63<\/p>\n<\/td>\n<td>\n<p>531,37<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>101<\/p>\n<\/td>\n<td>\n<p>672<\/p>\n<\/td>\n<td>\n<p>1360<\/p>\n<\/td>\n<td>\n<p>20,13<\/p>\n<\/td>\n<td>\n<p>33,06<\/p>\n<\/td>\n<td>\n<p>66,94<\/p>\n<\/td>\n<td>\n<p>92<\/p>\n<\/td>\n<td>\n<p>13<\/p>\n<\/td>\n<td>\n<p>395,40<\/p>\n<\/td>\n<td>\n<p>800,60<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>501<\/p>\n<\/td>\n<td>\n<p>486<\/p>\n<\/td>\n<td>\n<p>5692<\/p>\n<\/td>\n<td>\n<p>12,33<\/p>\n<\/td>\n<td>\n<p>7,87<\/p>\n<\/td>\n<td>\n<p>92,13<\/p>\n<\/td>\n<td>\n<p>141<\/p>\n<\/td>\n<td>\n<p>12<\/p>\n<\/td>\n<td>\n<p>133,19<\/p>\n<\/td>\n<td>\n<p>1558,81<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>1001<\/p>\n<\/td>\n<td>\n<p>530<\/p>\n<\/td>\n<td>\n<p>11634<\/p>\n<\/td>\n<td>\n<p>12,15<\/p>\n<\/td>\n<td>\n<p>4,36<\/p>\n<\/td>\n<td>\n<p>95,64<\/p>\n<\/td>\n<td>\n<p>237<\/p>\n<\/td>\n<td>\n<p>27<\/p>\n<\/td>\n<td>\n<p>278,80<\/p>\n<\/td>\n<td>\n<p>6120,20<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>5001<\/p>\n<\/td>\n<td>\n<p>408<\/p>\n<\/td>\n<td>\n<p>37793<\/p>\n<\/td>\n<td>\n<p>7,64<\/p>\n<\/td>\n<td>\n<p>1,07<\/p>\n<\/td>\n<td>\n<p>98,93<\/p>\n<\/td>\n<td>\n<p>617<\/p>\n<\/td>\n<td>\n<p>12<\/p>\n<\/td>\n<td>\n<p>79,15<\/p>\n<\/td>\n<td>\n<p>7324,85<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>10001<\/p>\n<\/td>\n<td>\n<p>396<\/p>\n<\/td>\n<td>\n<p>70788<\/p>\n<\/td>\n<td>\n<p>7,12<\/p>\n<\/td>\n<td>\n<p>0,56<\/p>\n<\/td>\n<td>\n<p>99,44<\/p>\n<\/td>\n<td>\n<p>1118<\/p>\n<\/td>\n<td>\n<p>12<\/p>\n<\/td>\n<td>\n<p>74,72<\/p>\n<\/td>\n<td>\n<p>13341,28<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>100001<\/p>\n<\/td>\n<td>\n<p>492<\/p>\n<\/td>\n<td>\n<p>725510<\/p>\n<\/td>\n<td>\n<p>7,26<\/p>\n<\/td>\n<td>\n<p>0,07<\/p>\n<\/td>\n<td>\n<p>99,93<\/p>\n<\/td>\n<td>\n<p>10409<\/p>\n<\/td>\n<td>\n<p>12<\/p>\n<\/td>\n<td>\n<p>84,72<\/p>\n<\/td>\n<td>\n<p>124823,28<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0418\u043b\u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043b\u044f \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u0431\u044a\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b: <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dbc\/090\/826\/dbc090826c27570619ed7e79622d8e14.png\" width=\"628\" height=\"344\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dbc\/090\/826\/dbc090826c27570619ed7e79622d8e14.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0418\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0447\u0435\u0440\u043f\u043d\u0443\u0442\u044c, \u0447\u0442\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u043f\u0443\u043b\u0430 \u043e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043c\u0430\u043b\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0447\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u043e\u043b\u044c\u0448\u0435, \u0442\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u044f. \u0422\u0430\u043a, \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 5% &#8212; 95%, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u0430 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0430\u044f \u043b\u0438\u043d\u0438\u044f, \u0432\u044b\u0448\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u0438\u043b\u044c\u043d\u043e\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a. \u042d\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0443\u0441\u043b\u043e\u0432\u043d\u043e, 500 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f\u043c \u0446\u0438\u043a\u043b\u0430 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u0435\u043b. \u041c\u043d\u043e\u0433\u043e \u044d\u0442\u043e \u0438\u043b\u0438 \u043c\u0430\u043b\u043e? \u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u043b\u044e\u0431\u0438\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u00a0<code>async\/await<\/code>\u00a0\u043f\u043b\u043e\u0442\u043d\u043e\u0439 \u0433\u0440\u044f\u0434\u043e\u0439 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0438 \u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u043e\u0432 \u0440\u0430\u0437\u0431\u0438\u0442\u044b \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u044d\u0442\u0438 \u0432\u044b\u0437\u043e\u0432\u044b.<\/p>\n<p>\u0417\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0451\u0434 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043f\u0443\u043b\u0430 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430, \u0440\u0435\u0447\u044c \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0439\u0434\u0451\u0442 \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435 (SmartThreadPool, .NET 5\/.NET 6):<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p>\u0418\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u0446\u0438\u043a\u043b\u0430<\/p>\n<\/th>\n<th>\n<p>\u0418\u0437\u0434\u0435\u0440\u0436\u043a\u0438, \u0442\u0430\u043a\u0442\u043e\u0432<\/p>\n<\/th>\n<th>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430, \u0442\u0430\u043a\u0442\u043e\u0432<\/p>\n<\/th>\n<th>\n<p>\u0426\u0435\u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0440\u0430\u0431\u043e\u0442\u044b<\/p>\n<\/th>\n<th>\n<p>\u0418\u0437\u0434\u0435\u0440\u0436\u043a\u0438, %<\/p>\n<\/th>\n<th>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430, %<\/p>\n<\/th>\n<th>\n<p>\u0412\u0440\u0435\u043c\u044f,\u043c\u0441<\/p>\n<\/th>\n<th>\n<p>\u041f\u043e\u0442\u043e\u043a\u043e\u0432<\/p>\n<\/th>\n<th>\n<p>\u0418\u0437\u0434, \u0441\u0443\u043c, \u043c\u0441\u0435\u043a<\/p>\n<\/th>\n<th>\n<p>\u0420\u0430\u0431, \u0441\u0443\u043c, \u043c\u0441\u0435\u043a<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p>0<\/p>\n<\/td>\n<td>\n<p>133<\/p>\n<\/td>\n<td>\n<p>54<\/p>\n<\/td>\n<td>\n<p>?<\/p>\n<\/td>\n<td>\n<p>71,08<\/p>\n<\/td>\n<td>\n<p>28,92<\/p>\n<\/td>\n<td>\n<p>126<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>89,56<\/p>\n<\/td>\n<td>\n<p>36,44<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>5<\/p>\n<\/td>\n<td>\n<p>143<\/p>\n<\/td>\n<td>\n<p>170<\/p>\n<\/td>\n<td>\n<p>62,80<\/p>\n<\/td>\n<td>\n<p>45,79<\/p>\n<\/td>\n<td>\n<p>54,21<\/p>\n<\/td>\n<td>\n<p>123<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>56,32<\/p>\n<\/td>\n<td>\n<p>66,68<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>11<\/p>\n<\/td>\n<td>\n<p>146<\/p>\n<\/td>\n<td>\n<p>82<\/p>\n<\/td>\n<td>\n<p>20,85<\/p>\n<\/td>\n<td>\n<p>64,04<\/p>\n<\/td>\n<td>\n<p>35,96<\/p>\n<\/td>\n<td>\n<p>131<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>83,89<\/p>\n<\/td>\n<td>\n<p>47,11<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>51<\/p>\n<\/td>\n<td>\n<p>130<\/p>\n<\/td>\n<td>\n<p>398<\/p>\n<\/td>\n<td>\n<p>10,38<\/p>\n<\/td>\n<td>\n<p>24,70<\/p>\n<\/td>\n<td>\n<p>75,30<\/p>\n<\/td>\n<td>\n<p>151<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>37,30<\/p>\n<\/td>\n<td>\n<p>113,70<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>101<\/p>\n<\/td>\n<td>\n<p>130<\/p>\n<\/td>\n<td>\n<p>719<\/p>\n<\/td>\n<td>\n<p>8,42<\/p>\n<\/td>\n<td>\n<p>15,39<\/p>\n<\/td>\n<td>\n<p>84,61<\/p>\n<\/td>\n<td>\n<p>213<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>32,78<\/p>\n<\/td>\n<td>\n<p>180,22<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>501<\/p>\n<\/td>\n<td>\n<p>118<\/p>\n<\/td>\n<td>\n<p>3007<\/p>\n<\/td>\n<td>\n<p>6,24<\/p>\n<\/td>\n<td>\n<p>3,79<\/p>\n<\/td>\n<td>\n<p>96,21<\/p>\n<\/td>\n<td>\n<p>614<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>23,28<\/p>\n<\/td>\n<td>\n<p>590,72<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>1001<\/p>\n<\/td>\n<td>\n<p>408<\/p>\n<\/td>\n<td>\n<p>6020<\/p>\n<\/td>\n<td>\n<p>6,42<\/p>\n<\/td>\n<td>\n<p>6,36<\/p>\n<\/td>\n<td>\n<p>93,64<\/p>\n<\/td>\n<td>\n<p>597<\/p>\n<\/td>\n<td>\n<p>3<\/p>\n<\/td>\n<td>\n<p>113,89<\/p>\n<\/td>\n<td>\n<p>1677,11<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>5001<\/p>\n<\/td>\n<td>\n<p>497<\/p>\n<\/td>\n<td>\n<p>35364<\/p>\n<\/td>\n<td>\n<p>7,17<\/p>\n<\/td>\n<td>\n<p>1,39<\/p>\n<\/td>\n<td>\n<p>98,61<\/p>\n<\/td>\n<td>\n<p>931<\/p>\n<\/td>\n<td>\n<p>11<\/p>\n<\/td>\n<td>\n<p>141,93<\/p>\n<\/td>\n<td>\n<p>10099,07<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>10001<\/p>\n<\/td>\n<td>\n<p>526<\/p>\n<\/td>\n<td>\n<p>84755<\/p>\n<\/td>\n<td>\n<p>8,53<\/p>\n<\/td>\n<td>\n<p>0,62<\/p>\n<\/td>\n<td>\n<p>99,38<\/p>\n<\/td>\n<td>\n<p>1368<\/p>\n<\/td>\n<td>\n<p>12<\/p>\n<\/td>\n<td>\n<p>101,31<\/p>\n<\/td>\n<td>\n<p>16314,69<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>100001<\/p>\n<\/td>\n<td>\n<p>722<\/p>\n<\/td>\n<td>\n<p>860697<\/p>\n<\/td>\n<td>\n<p>8,61<\/p>\n<\/td>\n<td>\n<p>0,08<\/p>\n<\/td>\n<td>\n<p>99,92<\/p>\n<\/td>\n<td>\n<p>13288<\/p>\n<\/td>\n<td>\n<p>12<\/p>\n<\/td>\n<td>\n<p>133,80<\/p>\n<\/td>\n<td>\n<p>159322,20<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0418\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u0443\u043f\u0430\u043b\u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0443\u043f\u0430\u043b\u0430 \u0446\u0435\u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0440\u0430\u0431\u043e\u0442\u044b, \u0443\u043f\u0430\u043b\u043e \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e \u043f\u043e\u0442\u043e\u043a\u0430\u043c. \u0410 \u0432\u0441\u0451 \u043f\u043e\u0447\u0435\u043c\u0443? \u0410 \u0432\u0441\u0451 \u043f\u043e\u0442\u043e\u043c\u0443 \u044d\u0442\u043e \u044d\u0442\u043e\u0442 \u043f\u0443\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u0432 \u0442.\u0447. \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u0432\u0435\u0440\u0445\u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u043f\u0443\u043b\u00a0<em>\u0434\u043e\u0433\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f<\/em>\u00a0\u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0432\u0441\u044e \u0435\u0451 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043b\u044e\u0441 \u0432 \u043d\u0451\u043c \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0440\u0435\u0434\u043a\u043e-\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u043f\u0443\u043b\u0430 \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u041a\u043e\u0433\u0434\u0430 \u0436\u0435 \u043e\u043d \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e\u0439\u0434\u0451\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e, \u043e\u043d \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u0446\u0435\u043b\u0435\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0442\u043e\u043a\u0438.<\/p>\n<p>\u0418 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0435 \u0436\u0435 \u0437\u0430\u043c\u0435\u0440\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0434\u043b\u044f \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430, \u0431\u0435\u0437 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u0430\u0446\u0438\u0438 (\u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 = \u0446\u0435\u043d\u0430 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0446\u0438\u043a\u043b\u0430\u00a0<code>for(...)<\/code>):<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p>\u0418\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u0446\u0438\u043a\u043b\u0430<\/p>\n<\/th>\n<th>\n<p>\u0418\u0437\u0434\u0435\u0440\u0436\u043a\u0438, \u0442\u0430\u043a\u0442\u043e\u0432<\/p>\n<\/th>\n<th>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430, \u0442\u0430\u043a\u0442\u043e\u0432<\/p>\n<\/th>\n<th>\n<p>\u0426\u0435\u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0440\u0430\u0431\u043e\u0442\u044b<\/p>\n<\/th>\n<th>\n<p>\u0418\u0437\u0434\u0435\u0440\u0436\u043a\u0438, %<\/p>\n<\/th>\n<th>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430, %<\/p>\n<\/th>\n<th>\n<p>\u0412\u0440\u0435\u043c\u044f,\u043c\u0441<\/p>\n<\/th>\n<th>\n<p>\u041f\u043e\u0442\u043e\u043a\u043e\u0432<\/p>\n<\/th>\n<th>\n<p>\u0418\u0437\u0434, \u0441\u0443\u043c, \u043c\u0441\u0435\u043a<\/p>\n<\/th>\n<th>\n<p>\u0420\u0430\u0431, \u0441\u0443\u043c, \u043c\u0441\u0435\u043a<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p>0<\/p>\n<\/td>\n<td>\n<p>23<\/p>\n<\/td>\n<td>\n<p>43<\/p>\n<\/td>\n<td>\n<p>?<\/p>\n<\/td>\n<td>\n<p>34,39<\/p>\n<\/td>\n<td>\n<p>65,61<\/p>\n<\/td>\n<td>\n<p>51<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>17,54<\/p>\n<\/td>\n<td>\n<p>33,46<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>5<\/p>\n<\/td>\n<td>\n<p>19<\/p>\n<\/td>\n<td>\n<p>45<\/p>\n<\/td>\n<td>\n<p>12,98<\/p>\n<\/td>\n<td>\n<p>29,42<\/p>\n<\/td>\n<td>\n<p>70,58<\/p>\n<\/td>\n<td>\n<p>40<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>11,77<\/p>\n<\/td>\n<td>\n<p>28,23<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>11<\/p>\n<\/td>\n<td>\n<p>18<\/p>\n<\/td>\n<td>\n<p>75<\/p>\n<\/td>\n<td>\n<p>8,59<\/p>\n<\/td>\n<td>\n<p>20,09<\/p>\n<\/td>\n<td>\n<p>79,91<\/p>\n<\/td>\n<td>\n<p>45<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>9,04<\/p>\n<\/td>\n<td>\n<p>35,96<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>51<\/p>\n<\/td>\n<td>\n<p>19<\/p>\n<\/td>\n<td>\n<p>386<\/p>\n<\/td>\n<td>\n<p>7,96<\/p>\n<\/td>\n<td>\n<p>4,72<\/p>\n<\/td>\n<td>\n<p>95,28<\/p>\n<\/td>\n<td>\n<p>112<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>5,28<\/p>\n<\/td>\n<td>\n<p>106,72<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>101<\/p>\n<\/td>\n<td>\n<p>18<\/p>\n<\/td>\n<td>\n<p>699<\/p>\n<\/td>\n<td>\n<p>7,11<\/p>\n<\/td>\n<td>\n<p>2,64<\/p>\n<\/td>\n<td>\n<p>97,36<\/p>\n<\/td>\n<td>\n<p>157<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>4,15<\/p>\n<\/td>\n<td>\n<p>152,85<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>501<\/p>\n<\/td>\n<td>\n<p>16<\/p>\n<\/td>\n<td>\n<p>2946<\/p>\n<\/td>\n<td>\n<p>5,91<\/p>\n<\/td>\n<td>\n<p>0,57<\/p>\n<\/td>\n<td>\n<p>99,43<\/p>\n<\/td>\n<td>\n<p>566<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>3,24<\/p>\n<\/td>\n<td>\n<p>562,76<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>1001<\/p>\n<\/td>\n<td>\n<p>15<\/p>\n<\/td>\n<td>\n<p>5169<\/p>\n<\/td>\n<td>\n<p>5,18<\/p>\n<\/td>\n<td>\n<p>0,29<\/p>\n<\/td>\n<td>\n<p>99,71<\/p>\n<\/td>\n<td>\n<p>977<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>2,83<\/p>\n<\/td>\n<td>\n<p>974,17<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>5001<\/p>\n<\/td>\n<td>\n<p>14<\/p>\n<\/td>\n<td>\n<p>25602<\/p>\n<\/td>\n<td>\n<p>5,12<\/p>\n<\/td>\n<td>\n<p>0,06<\/p>\n<\/td>\n<td>\n<p>99,94<\/p>\n<\/td>\n<td>\n<p>4743<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>2,76<\/p>\n<\/td>\n<td>\n<p>4740,24<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>10001<\/p>\n<\/td>\n<td>\n<p>15<\/p>\n<\/td>\n<td>\n<p>51282<\/p>\n<\/td>\n<td>\n<p>5,13<\/p>\n<\/td>\n<td>\n<p>0,03<\/p>\n<\/td>\n<td>\n<p>99,97<\/p>\n<\/td>\n<td>\n<p>9482<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>2,80<\/p>\n<\/td>\n<td>\n<p>9479,20<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>100001<\/p>\n<\/td>\n<td>\n<p>25<\/p>\n<\/td>\n<td>\n<p>547279<\/p>\n<\/td>\n<td>\n<p>5,47<\/p>\n<\/td>\n<td>\n<p>0,00<\/p>\n<\/td>\n<td>\n<p>100,00<\/p>\n<\/td>\n<td>\n<p>100921<\/p>\n<\/td>\n<td>\n<p>1<\/p>\n<\/td>\n<td>\n<p>4,63<\/p>\n<\/td>\n<td>\n<p>100916,37<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0418 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0433\u0440\u0430\u0444\u0438\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0442 \u043e\u0431\u044a\u0451\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0442\u0440\u0451\u0445 \u0442\u0438\u043f\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b: \u043f\u0440\u043e\u0441\u0442\u043e \u0446\u0438\u043a\u043b, ThreadPool \u0438 \u043d\u0435\u043a\u0438\u0439 \u043d\u0430\u0448 SmartThreadPool, \u0440\u0435\u0447\u044c \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0439\u0434\u0451\u0442 \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435:  <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0f5\/b50\/9c2\/0f5b509c2dda95818fde878e057022bd.png\" alt=\"\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u0449\u0435\u0433\u043e\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0433\u043e\u00a0\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \" title=\"\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u0449\u0435\u0433\u043e\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0433\u043e\u00a0\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \" width=\"1393\" height=\"433\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0f5\/b50\/9c2\/0f5b509c2dda95818fde878e057022bd.png\"\/><figcaption>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u0449\u0435\u0433\u043e\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0433\u043e\u00a0\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f <\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d79\/f06\/1f5\/d79f061f5bd5ec366157928a986c996b.png\" alt=\"\u0421\u0440\u0435\u0432\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u0430\" title=\"\u0421\u0440\u0435\u0432\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u0430\" width=\"1415\" height=\"414\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d79\/f06\/1f5\/d79f061f5bd5ec366157928a986c996b.png\"\/><figcaption>\u0421\u0440\u0435\u0432\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u0430<\/figcaption><\/figure>\n<p>\u0427\u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c? \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a (\u0441\u043c \u0442\u0430\u0431\u043b), \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e 500 &#8212; 600 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u043e\u043d \u043e\u0431\u0433\u043e\u043d\u044f\u0435\u0442 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0447\u0435\u0440\u0435\u0437 TheradPool \u0438 SmartThreadPool. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0441\u043b\u0435 &#8212; \u0432\u043f\u0435\u0440\u0451\u0434 \u0432\u044b\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f SmartThreadPool, \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u043b\u0438\u0434\u0435\u0440\u0441\u0442\u0432\u043e \u043d\u0430 \u0432\u0441\u0451\u043c \u043e\u0441\u0442\u0430\u0442\u043a\u0435 \u043e\u0431\u044a\u0435\u043c\u043e\u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u043b\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u0447\u0442\u043e\u0431\u044b \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u043c\u0435\u043b\u0430 \u0441\u043c\u044b\u0441\u043b, \u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0448\u043b\u0430 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u043c. \u041a\u0430\u043a \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0431\u0433\u043e\u043d\u044f\u0442\u044c \u043f\u0440\u044f\u043c\u043e\u0439 \u0446\u0438\u043a\u043b \u043d\u0430 600 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f\u0445. \u0418 \u044d\u0442\u043e \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e \u043a\u0430\u043a \u0434\u043b\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e ThreadPool, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e. \u041d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e.<\/p>\n<h3>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a<\/h3>\n<p>\u041d\u0430 \u043c\u043e\u0451\u043c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435\u00a0<code>2.7GHz = 2700000000<\/code>\u00a0\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432 \u0441\u0435\u043a. \u0422.\u0435.\u00a0<code>1 \u0441\u0435\u043a \/ (2.7*10^9) = 0,37 \u043d\u0430\u043d\u043e\u0441\u0435\u043a<\/code>\u00a0\u043d\u0430 \u0442\u0430\u043a\u0442. \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u0434\u043b\u044f 51 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438: 386 + 19 = 405 \u0442\u0430\u043a\u0442\u043e\u0432 \u043d\u0430 \u0446\u0438\u043a\u043b.\u00a0<code>0,37 \u043d\u0430\u043d\u043e\u0441\u0435\u043a * 405 = 150 \u043d\u0430\u043d\u043e\u0441\u0435\u043a<\/code>\u00a0\u043d\u0430 \u0442\u0435\u043b\u043e \u043c\u0435\u0442\u043e\u0434\u0430.\u00a0<code>150 \u043d\u0430\u043d\u043e\u0441\u0435\u043a * 500_000 \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u043e\u0432 \/ 1_000_000 (\u043d\u0430\u043d\u043e\u0441\u0435\u043a -> \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a) = 75 \u043c\u0441<\/code>. \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0435:\u00a0<code>76 \u043c\u0441<\/code>. \u0427\u0442\u043e \u0432 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442, \u0442.\u043a. \u0432 75 \u043c\u0441 \u043d\u0435 \u0443\u0447\u0442\u0435\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e. \u0410 \u0437\u0430\u043e\u0434\u043d\u043e \u0438 \u0438\u0437\u043c\u0435\u0440\u0438\u043b\u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u0435\u0442\u043e\u0434\u0430 \u0434\u043b\u044f ThreadPool&#8217;\u0430: 150 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u043d\u0430\u0447\u0438\u0442 \u0442\u043e, \u0447\u0442\u043e\u00a0<em>\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/em>\u00a0\u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u043d\u0435 \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u0442.\u043a. \u043e\u043d \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439. \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0430\u043c\u0435\u0440\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u0432\u044b\u0434\u0430\u0442\u044c .NET &#8212; \u044d\u0442\u043e\u00a0<code>Stopwatch.GetTimestamp()<\/code>. \u0422\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u0441\u0447\u0451\u0442\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435\u00a0<code>Stopwatch.Frequency<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443 \u043c\u0435\u043d\u044f \u0440\u0430\u0432\u0435\u043d 10_000_000\u00a0<code>\u0442\u0430\u043a\u0442\u043e\u0432<\/code>\u00a0(\u0442\u0430\u043a\u0442\u043e\u0432 \u044d\u0442\u043e\u0433\u043e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430, \u043d\u0435 CPU) \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u0422.\u0435. 100 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u043c. \u0427\u0442\u043e \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u0435\u043c\u043b\u0438\u043c\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043d\u0430\u0441. \u0412\u0435\u0434\u044c \u043f\u0435\u0440\u0432\u043e\u0435 \u0432\u0437\u044f\u0442\u0438\u0435\u00a0<code>GetTimestamp()<\/code>\u00a0\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432 \u043a\u043e\u043d\u0446\u0435 100-\u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 &#8212; \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0438 \u0434\u0435\u043b\u044c\u0442\u0430, \u0440\u0430\u0432\u043d\u0430\u044f 2 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u0430 199 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u043c, \u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 110, \u0447\u0442\u043e \u0434\u043b\u044f \u043d\u0430\u0441 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442: \u043d\u0430\u043c \u043d\u0430\u0434\u043e 150 \u0438 \u0432\u044b\u0448\u0435. \u0422.\u0435. \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u0447\u0438\u0441\u043b\u043e 3. \u041d\u043e \u0442\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0432 299 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434. \u0410 \u044d\u0442\u043e \u0443\u0436\u0435 \u043d\u0435 51 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u0435\u043b, \u0430 100 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439. \u041d\u043e \u043d\u0430 \u044d\u0442\u043e \u0447\u0438\u0441\u043b\u043e \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0443\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0437\u043e\u043d\u0443 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u043d\u044b\u0445 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432.<\/p>\n<p>\u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043c\u043e\u0439 \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u043d\u0435 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0431\u044b\u0441\u0442\u0440 \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u043d\u0435\u0433\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439\u00a0<code>4.9 GHz<\/code>. \u0427\u0442\u043e \u0434\u0430\u0451\u0442 0.2 \u043d\u0430\u043d\u043e\u0441\u0435\u043a \u043d\u0430 \u0442\u0430\u043a\u0442 \u0438 81 \u0442\u0430\u043a\u0442 \u043d\u0430 \u0442\u0435\u043b\u043e \u043c\u0435\u0442\u043e\u0434\u0430. \u0410 \u044d\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u0432 \u0434\u0438\u0430\u043f\u043e\u0437\u043e\u043d \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438\u00a0<code>Stopwatch.GetTimestamp()<\/code>\u00a01-2, \u0430 \u043d\u0435 2-3. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0432\u044b \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0434\u043e\u0439\u0434\u0451\u0442\u0435 \u0434\u043e \u0442\u0430\u043a\u0438\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043b\u0443\u0447\u0448\u0435 \u043d\u0430 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043d\u0430 \u043e\u0431\u043e\u0438\u0445 \u0442\u0438\u043f\u0430\u0445 \u0441\u0438\u0441\u0442\u0435\u043c.<\/p>\n<h3>\u0412\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/h3>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u043c\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u0438\u043c\u0435\u043d\u043d\u043e ThreadPool`\u044b \u043d\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043c\u0430\u0445 \u0437\u0430\u0434\u0430\u0447. \u0415\u0441\u043b\u0438 \u0431\u044b \u043d\u0430\u043c \u0431\u044b\u043b\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443, \u044d\u0442\u043e \u043d\u0435 \u0431\u044b\u043b\u043e \u0431\u044b 500_000 \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u043e\u0432 \u0432 ThreadPool, \u0430 \u0441\u043a\u043e\u0440\u0435\u0435 12 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043f\u043e \u0446\u0438\u043a\u043b\u0443 \u0432 41666 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439, \u043d\u043e \u0437\u0430\u0442\u043e \u043c\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u0443\u044e \u0432\u0435\u0449\u044c: \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043a\u0430\u0436\u0434\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0441\u0442\u043e\u0438\u0442 \u0440\u0435\u0448\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043f\u0443\u043b \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u041e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u0438\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0412\u0442\u043e\u0440\u043e\u0435 &#8212; \u0435\u0441\u043b\u0438 \u0443\u0436 \u0440\u0435\u0448\u0430\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 ThreadPool, \u0442\u043e \u043d\u0430\u0434\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u043e \u0441\u0432\u043e\u0440\u0435\u0445\u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u043e\u0432 \u0442\u0443\u0434\u0430 \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c: \u044d\u0442\u043e \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 \u0443\u0441\u043a\u043e\u0440\u0438\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0430, \u0441\u043a\u043e\u0440\u0435\u0435, \u0437\u0430\u043c\u0435\u0434\u0438\u0442.<\/p>\n<p>\u041a\u0430\u043a \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f?<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f41\/b28\/cbf\/f41b28cbf66b9bf2332ae7b201024d6a.png\" alt=\"ThreadPool \" title=\"ThreadPool \" width=\"1510\" height=\"580\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f41\/b28\/cbf\/f41b28cbf66b9bf2332ae7b201024d6a.png\"\/><figcaption>ThreadPool <\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/981\/50e\/cd6\/98150ecd6d93ecd1807a250513997b95.png\" alt=\"SmartThreadPool \" title=\"SmartThreadPool \" width=\"1602\" height=\"518\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/981\/50e\/cd6\/98150ecd6d93ecd1807a250513997b95.png\"\/><figcaption>SmartThreadPool <\/figcaption><\/figure>\n<p>\u041f\u0438\u043a\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a \u043f\u0435\u0440\u0435\u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438\u0441\u044c \u0438 \u0443\u0448\u043b\u0438 \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d, \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d &#171;\u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432&#187;, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0442 \u0431\u043e\u0440\u044c\u0431\u044b \u0437\u0430 \u0440\u0435\u0441\u0443\u0440\u0441. \u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0438\u043a \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0441\u0447\u0435\u0437, \u0430 \u0442\u0440\u0435\u0442\u0438\u0439 \u0441\u0442\u0430\u043b \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0438\u0436\u0435. \u0422.\u0435. \u043d\u043e\u0432\u044b\u0439 \u043f\u0443\u043b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043e\u0431\u0433\u043e\u043d\u044f\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e CPU-bound \u043a\u043e\u0434\u0430, \u043d\u043e \u0438 IO-bound \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f IO-bound \u0433\u0440\u0443\u043f\u043f\u044b \u043f\u043e\u0442\u043e\u043a\u043e\u0432 ThreadPool (\u0431\u0435\u0437\u00a0<code>ThreadPool.RegisterWaitForSingleObject<\/code>). \u042f \u0433\u043e\u0432\u043e\u0440\u044e \u043e \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 ThreadPool, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438\u00a0<code>QueueUserWorkItem<\/code>. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u044b, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439, \u043e\u0436\u0438\u0434\u0430\u044e\u0442 \u043e\u0442 \u041e\u0421 \u0441\u0438\u0433\u043d\u0430\u043b\u0430, \u0441\u043d\u044f\u0442\u0438\u044f \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435\u043c \u043e\u0442 \u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430. \u0418 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043f\u0443\u0441\u0442\u044c \u0438 \u043d\u0435 \u043d\u0430 \u0434\u043e\u043b\u0433\u043e, \u043d\u043e \u0441\u043d\u0438\u0436\u0430\u044e\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c ThreadPool \u0441\u043d\u0438\u0437\u0438\u0432 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e).<\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u043c\u0438\u043c\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u0432\u044b \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 ThreadPool \u043f\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u043e\u0432: ThreadPool \u0443\u0436\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0432\u0441\u0435 100%. \u0418 \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u0442\u0430\u043a\u0438\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e. \u041c\u044b \u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c Request, \u0442\u043e \u0436\u0434\u0451\u043c Response, \u0442\u043e \u0435\u0449\u0451 \u0447\u0442\u043e. \u0418 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 ThreadPool \u0438\u043c\u0435\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 &#171;\u043f\u043e \u0434\u0432\u0430 \u043f\u043e\u0442\u043e\u043a\u0430 \u043d\u0430 \u044f\u0434\u0440\u043e&#187;. \u0412 \u0445\u0443\u0434\u0448\u0435\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435, \u043d\u043e \u043f\u0440\u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u0430\u0445: \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 ThreadPool \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e CPU-bound \u043a\u043e\u0434 ThreadPool \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0441\u0435\u0432\u0434\u043e\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438, \u043d\u043e \u0441 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0438\u0437 \u0437\u0430\u0434\u0430\u0447 \u0432\u0441\u0442\u0430\u043d\u0435\u0442 \u0432 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443, \u0430 ThreadPool \u0438\u043c\u0435\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0442\u043e\u043a \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u044f\u0434\u0440\u0435, \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0438 \u0441\u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0443\u0436\u0435 \u043d\u0435 50% \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0430 \u0432\u0441\u0435 100%. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0438\u043c\u0435\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 x2 \u043e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u044f\u0434\u0435\u0440 \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u044f IO-bound \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 ThreadPool \u0438\u0445 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 x3, \u0442\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0442.\u043a. \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u0432\u0430 \u043f\u043e\u0442\u043e\u043a\u0430 \u0438\u0437 \u0442\u0440\u0451\u0445 \u043d\u0430 \u044f\u0434\u0440\u0435 \u0443\u0439\u0434\u0443\u0442 \u0432 IO-bound \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u0440\u0430\u0439\u043d\u0435 \u043c\u0430\u043b\u0430 \u0438 \u043f\u043e\u0442\u043e\u043c\u0443 \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430.<\/p>\n<h2>\u0412\u044b\u0432\u043e\u0434\u044b \u043f\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0443<\/h2>\n<ul>\n<li>\n<p>\u041f\u043e\u0442\u043e\u043a\u0438 &#8212; \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043e \u043d\u0438\u0445 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442;<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0442\u043e\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0434\u0440\u0430\u0445, \u0442\u0430\u043a \u0438 \u043f\u0441\u0435\u0432\u0434\u043e\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u044f\u0434\u0440\u0435 \u043e\u043d\u0438 \u0447\u0435\u0440\u0435\u0437\u0434\u0443\u044e\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0447\u0442\u043e\u0431\u044b \u0434\u043b\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0433\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u0435\u043b\u044f \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0439;<\/p>\n<\/li>\n<li>\n<p>\u0410 \u043f\u043e\u0442\u043e\u043c\u0443 \u043f\u043e\u0442\u043e\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u0434\u0430\u0436\u0435 \u043f\u043e \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438\u00a0<code>x = y<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u0430\u0445 \u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0443 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u044b, \u0442.\u043a. \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u0434\u043e\u0440\u043e\u0433\u043e\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0418\u043d\u0430\u0447\u0435 \u0432\u043f\u043e\u043b\u043d\u0435 \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f ThreadPool&#8217;\u043e\u043c: \u043e\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0438 \u0441\u043e\u0437\u0434\u0430\u043d \u0447\u0442\u043e\u0431\u044b \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u0431\u044f \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0440\u044f\u0434 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u0437\u0430\u0434\u0430\u0447\u00a0<em>\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438<\/em>\u00a0\u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 IO-bound \u0438 CPU-bound \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u041f\u0435\u0440\u0432\u044b\u0435 &#8212; \u043d\u0430 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438, \u0432\u0442\u043e\u0440\u044b\u0435 &#8212; \u043d\u0430 \u043f\u0440\u043e\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435. \u041f\u043e\u043a\u0430 \u0438\u0434\u0451\u0442 IO-bound \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f, \u043f\u043e\u0442\u043e\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u0441\u0442\u0430\u0442\u044c \u0432 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443;<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f CPU-bound \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0443 \u043f\u0443\u043b\u0430 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0441\u0432\u043e\u0438 \u043c\u0435\u0442\u043e\u0434\u044b, \u0434\u043b\u044f IO-bound &#8212; \u0441\u0432\u043e\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e\u0442\u043e\u043a\u0430 &#8212; \u044d\u0442\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0435\u0433\u043e \u0438\u0437 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043f\u043e\u0442\u043e\u043a \u0432 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0435 \u043d\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0443\u043b \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0442\u0440\u0430\u0442\u0438\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u043d\u0430 \u0441\u0432\u043e\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0410 \u0437\u043d\u0430\u0447\u0438\u0442 \u0435\u0441\u0442\u044c \u0433\u0440\u0430\u043d\u044c, \u043a\u0430\u043a\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0432\u044b\u0433\u043e\u0434\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043b\u0438\u043d\u0435\u0439\u043d\u043e, \u0430 \u043a\u0430\u043a\u0443\u044e &#8212; \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e, \u0447\u0435\u0440\u0435\u0437 \u043f\u0443\u043b \u043f\u043e\u0442\u043e\u043a\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0426\u0435\u043d\u0430 \u044d\u0442\u0430 &#8212; 500 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u0446\u0438\u043a\u043b\u0430 \u0441\u0443\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0432\u0443\u0445 \u0447\u0438\u0441\u0435\u043b \u0438\u043b\u0438 3000 \u0442\u0430\u043a\u0442\u043e\u0432. \u0421\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \ud83d\ude42<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/654111\/\"> https:\/\/habr.com\/ru\/post\/654111\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412 <a href=\"https:\/\/habr.com\/ru\/post\/654101\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438<\/a> \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438 \u043f\u0443\u043b\u043e\u0432 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438 \u0433\u043e\u0442\u043e\u0432\u044b \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u0438 \u043d\u0430\u0439\u0434\u0451\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0451\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u043b\u044f \u043f\u0443\u043b\u0430 \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u0427\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u043d\u0435 \u0434\u0430\u0432\u043b\u0435\u043b\u0438 \u043d\u0430\u0434 \u043e\u0431\u044a\u0451\u043c\u043e\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b<\/p>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442 SmartThreadPool, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0434\u0451\u0442 \u0440\u0435\u0447\u044c \u0432 \u0441\u0442\u0430\u0442\u044c\u0435: <\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/sidristij\/threading-kit\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/sidristij\/threading-kit<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u26a0\ufe0f\u00a0<em>\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438<\/em> <\/p>\n<p>\u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442, \u0447\u0442\u043e \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0432\u043b\u0438\u044f\u0435\u0442\u00a0<strong>\u0433\u0440\u0430\u043d\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b<\/strong>. \u0418\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u0432\u0438\u0434\u0443, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u043e\u0432. \u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439, \u0433\u0440\u0430\u043d\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0430\u0431\u044b \u043a\u0430\u043a\u043e\u0439: \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c\u00a0<em>\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439<\/em>. \u0418 \u043f\u043e\u043c\u0438\u043c\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447 \u043d\u0430 ThreadPool, \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u0447\u0435\u0440\u0435\u0437 TPL \u0442\u0430\u043a \u0438 \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u043b \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u0437\u044f\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 ThreadPool, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u044c \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 ThreadPool \u0432 \u0442\u0430\u043a\u0442\u0430\u0445 Time Stamp Counter \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u043c\u043e\u0436\u043d\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0438 \u0432 \u0447\u0451\u043c-\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u043c \u0442\u0438\u043f\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434, \u043d\u043e \u0442\u0430\u043c \u043d\u0430 \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u0445 \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0443\u043b\u0438)  <\/p>\n<pre><code class=\"cs\">ConcurrentQueue&lt;Record> bag = new ConcurrentQueue&lt;UserQuery.Record>(); unsafe delegate*&lt;long> rdtsc; long rdtscCallCost; long[] lastValues = new long[100];  unsafe void Main() { rdtsc = CreateRdtscMethod(); var rdtsc_costs = new List&lt;long>(10000);  for(int i = 0; i &lt; 10000; i++) { rdtsc_costs.Add(Math.Abs(rdtsc()-rdtsc())); }  rdtscCallCost = (long)rdtsc_costs.Average();  for(int i = 0; i &lt; 1_000_000; i++) { ThreadPool.QueueUserWorkItem(TraceWork, bag); }  Console.Read(); bag.Dump(); }  unsafe void TraceWork(object x) { var rd = rdtsc(); var tid = Environment.CurrentManagedThreadId; var last = lastValues[tid];  bag.Enqueue(new Record {  Ticks = rd - last - rdtscCallCost, TID = Environment.CurrentManagedThreadId });  lastValues[tid] = rdtsc(); }  struct Record { public long Ticks; public int TID; }  unsafe static delegate*&lt;long> CreateRdtscMethod() { var ptr = VirtualAlloc(IntPtr.Zero, (uint)rdtscAsm.Length, MEM_COMMIT, PAGE_EXECUTE_READWRITE); Marshal.Copy(rdtscAsm, 0, ptr, rdtscAsm.Length); return (delegate*&lt;long>)ptr; }  const uint PAGE_EXECUTE_READWRITE = 0x40; const uint MEM_COMMIT = 0x1000;  [DllImport(\"kernel32.dll\", SetLastError = true)] static extern IntPtr VirtualAlloc( IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect);  static readonly byte[] rdtscAsm = { 0x0F, 0x31, \/\/ rdtsc     0xC3        \/\/ ret }; <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u00a0<code>CreateRdtscMethod<\/code>\u00a0\u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0443 Windows \u0438 \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u043c \u0435\u0451 \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u0443\u044e \u043a \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u043a\u043e\u0434\u0430. \u041c\u0435\u0442\u043e\u0434 \u044d\u0442\u043e\u0442 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u0432 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u00a0<code>rdtscAsm<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0432\u044b\u0437\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438\u00a0<code>rdtsc<\/code>\u00a0\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0432 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u043a\u043e\u0434. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0431\u0443\u0444\u0435\u0440 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 \u043a \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e \u043d\u0430 \u043c\u0435\u0442\u043e\u0434 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c .NET \u043c\u0435\u0442\u043e\u0434 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 asm \u043a\u043e\u0434\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 CPU \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438\u00a0<code>rdtsc<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u0447\u0451\u0442\u0447\u0438\u043a TSC (Time Stamp Counter) \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 EDX:EAX 64-\u0431\u0438\u0442\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0441\u0431\u0440\u043e\u0441\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430. \u0421\u0442\u0430\u0440\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0447\u0438\u0441\u043b\u0430 \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u0430, \u0442.\u043a. \u043c\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u043c\u00a0<strong>\u0440\u0430\u0437\u043d\u0438\u0446\u0443<\/strong>, \u0430 \u043f\u043e\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 2-\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430\u00a0<code>rdtsc()<\/code>\u00a0\u0434\u0430\u0441\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u044b \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0432 \u043f\u0443\u043b \u043e\u0434\u0438\u043d \u043c\u0438\u043b\u043b\u0438\u043e\u043d \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u00a0<code>ConcurrentQueue<\/code>\u00a0\u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043a\u0443\u0449\u0438\u043c\u00a0<code>rdtsc<\/code>\u00a0\u0438 \u043f\u0440\u043e\u0448\u043b\u044b\u043c \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435. \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0442\u043e\u043a\u0430 \u0432\u0430\u0436\u043d\u043e, \u0442.\u043a. \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0434\u0440\u0430\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430.<\/p>\n<blockquote>\n<p>\u0418\u043d\u043e\u0433\u0434\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435, \u0438\u0434\u0443\u0449\u0438\u0435 \u043c\u0438\u043c\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438, \u043f\u0440\u043e\u0431\u0435\u043b\u044b. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0442\u043e\u043a \u0431\u044b\u043b \u043f\u0440\u0435\u0440\u0432\u0430\u043d \u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u044f\u0434\u0440\u0435 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0438, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u0430\u0436\u0435 \u043d\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<\/blockquote>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043c\u0435\u0440\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043f\u0443\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0430\u043b \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443, \u043e\u043d \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b \u043d\u0430 1 \u043f\u043e\u0442\u043e\u043a\u0435 \u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u0431\u044f \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u044b \u0441 \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438 \u043d\u0430 \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0440\u0430\u0432\u043d\u044b\u043c\u0438\u00a0<code>100-200<\/code>\u00a0\u0442\u0430\u043a\u0442\u043e\u0432. \u0414\u0430\u043b\u0435\u0435, \u043f\u043e \u043c\u0435\u0440\u0435 \u0440\u043e\u0441\u0442\u0430 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u0430 \u043f\u0443\u043b\u0430 \u0440\u0430\u0441\u0442\u0451\u0442 \u0438 \u0446\u0435\u043d\u0430 \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a: \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u043c\u0435\u0442\u043a\u0443\u00a0<code>200-300<\/code>\u00a0\u043e\u043d\u0430 \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e\u00a0<code>500-900<\/code>\u00a0\u0442\u0430\u043a\u0442\u043e\u0432. \u0415\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0435\u00a0<code>1500-2500<\/code>\u00a0\u0442\u0430\u043a\u0442\u043e\u0432 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442\u0441\u044f, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0432\u0437\u044f\u0442\u044c \u0434\u0435\u043b\u0435\u0433\u0430\u0442 \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044e\u0442 \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u044b, \u0430 \u0442\u043e\u0442, \u0447\u0442\u043e\u00a0<em>\u043f\u0440\u0438\u0442\u043e\u0440\u043c\u043e\u0437\u0438\u043b<\/em>\u00a0\u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0431\u043e\u0440\u0435\u0442\u0441\u044f \u0437\u0430 \u0441\u043c\u0435\u043d\u0443 &#171;\u0445\u0432\u043e\u0441\u0442\u0430&#187; \u043e\u0447\u0435\u0440\u0435\u0434\u0438.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0447\u0435\u0440\u0435\u0434\u0443\u044e\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b (<code>40<\/code>\u00a0\u0442\u0430\u043a\u0442\u043e\u0432) \u0438 \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0443\u043b\u043e\u043c (\u043f\u0443\u0441\u0442\u044c,\u00a0<code>800<\/code>\u00a0\u0442\u0430\u043a\u0442\u043e\u0432). \u0415\u0441\u043b\u0438 \u0443\u0447\u0435\u0441\u0442\u044c, \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u0438\u0434\u0451\u0442 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c, \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u043a \u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442. \u0415\u0441\u043b\u0438 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438 \u043d\u0430 8 \u043f\u043e\u0442\u043e\u043a\u0430\u0445 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0443 \u043e\u0434\u043d\u043e\u0433\u043e &#8212; \u0432\u044b\u0431\u043e\u0440 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u0430, \u0442\u043e \u0442\u043e\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u0442 \u0432\u044b\u0431\u043e\u0440 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e, \u0442.\u043a. \u043d\u0438 \u0441 \u043a\u0435\u043c \u043d\u0435 \u0441\u043e\u043f\u0435\u0440\u043d\u0438\u0447\u0430\u0435\u0442. \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u0438\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0443\u0436\u0435 \u0434\u0432\u0430, \u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0441\u043f\u043e\u0440 \u0437\u0430 \u043e\u0431\u0449\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441: \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u043e\u0432. \u0415\u0441\u043b\u0438 \u0442\u0440\u0438, \u0441\u043f\u043e\u0440 \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u0438 \u043e\u0442 \u0442\u043e\u0433\u043e &#8212; \u0434\u043e\u043b\u044c\u0448\u0435 (\u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0443\u0442 \u043e\u043d, \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430, \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u0432\u00a0<code>500<\/code>\u00a0\u0442\u0430\u043a\u0442\u043e\u0432). \u0415\u0441\u043b\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u0430, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442? \u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u043f\u043e\u0440\u0430. \u0414\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u0441\u043f\u043e\u0440\u0430 \u0440\u0430\u0441\u0442\u0451\u0442. \u041f\u0443\u043b \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0447\u0438\u0442\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0437\u043a\u043e \u043f\u0430\u0434\u0430\u0435\u0442, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u042d\u0442\u043e \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043f\u043e\u0440 \u0437\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044f \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044e \u0441\u043f\u043e\u0440\u0430. \u0412 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0451\u0442\u0435 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439, \u0447\u0442\u043e \u0432 \u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f 1 \u043f\u043e\u0442\u043e\u043a. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 &#8212; \u0441\u043f\u043e\u0440\u044f\u0442, \u043a\u0442\u043e \u0437\u0430\u0431\u0435\u0440\u0451\u0442 \u0441 \u043d\u0435\u0451 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u043d\u0430\u0448\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u043e\u0447\u0435\u043d\u044c \u043a\u043e\u0440\u043e\u0442\u043a\u0430\u044f \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 40 \u0442\u0430\u043a\u0442\u043e\u0432 (\u043a\u0430\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043c\u0435\u0442\u043e\u0434\u0430\u00a0<code>TraceWork<\/code>), \u0442\u043e \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u0434\u043b\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0434\u0430\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u0448\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u0442\u043e\u0438\u0442\u044c\u00a0<code>1250% - 2000%<\/code>\u00a0\u043e\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0435\u043c \u043d\u0430 ThreadPool. \u041e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044f\u0441\u044c \u043e\u0442 \u044d\u0442\u0438\u0445 \u0446\u0438\u0444\u0440 \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u0435\u043b\u043e \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0431\u0440\u0430\u0442\u044c \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u0437\u0430\u00a0<code>200-300<\/code>\u00a0\u0442\u0430\u043a\u0442\u043e\u0432, \u0430 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0443\u043c\u0435\u0440\u0435\u043d\u043d\u043e-\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438, \u0438 \u0435\u0441\u043b\u0438 \u0432\u0437\u044f\u0442\u044c \u0438\u0445 \u0437\u0430 5%, \u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0435 \u043c\u0435\u043d\u044c\u0448\u0435\u00a0<code>(250 \/ 5 * 95) = 4750<\/code>\u00a0\u0442\u0430\u043a\u0442\u043e\u0432. \u0422.\u0435. \u043a\u043e\u0434\u0430 \u0432 \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e. \u041d\u043e \u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043e\u043d\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c, \u0432 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0435\u043c ThreadPool, \u0442.\u043a. \u043e\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0449\u0438\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c.<\/p>\n<p>\u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0436\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0445\u043e\u0439. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f 1 \u043c\u043b\u043d \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u043e\u0432 \u0432 ThreadPool \u043d\u0430 6 (12 HyperThreading) \u044f\u0434\u0440\u0430\u0445. \u0422.\u0435. 24 \u043f\u043e\u0442\u043e\u043a\u0430\u0445 ThreadPool:<\/p>\n<figure class=\"full-width\"><figcaption>\u041f\u0435\u0440\u0432\u0430\u044f 1,000 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439: \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0443\u043b \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u0438\u043d\u044f\u043b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0437\u043a\u043e\u043c\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e<\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption>\u0412\u0435\u0441\u044c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439: \u0434\u0430\u043b\u0435\u0435 \u043f\u0443\u043b \u043f\u0440\u0438\u043d\u044f\u043b \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0440\u0435\u0437\u043a\u043e \u0443\u0445\u0443\u0434\u0448\u0438\u043b\u043e\u0441\u044c<\/figcaption><\/figure>\n<p>\u0418 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043c &#171;\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u043d\u043e\u0435&#187; \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u043c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0437 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0432\u044b\u0448\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430 \u043a\u0430\u043a\u0438\u0435 50-\u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u043f\u0443\u043b\u0430. \u0417\u0430\u043c\u0435\u0440\u044b \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043c \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0432 \u043b\u0435\u0433\u0435\u043d\u0434\u0435 \u0434\u043b\u0438\u043d \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430 &#171;\u0440\u0430\u0431\u043e\u0442\u044b&#187; \u043c\u0435\u0442\u043e\u0434\u0430, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0432 \u043f\u0443\u043b \u043f\u043e\u0442\u043e\u043a\u043e\u0432:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041a\u0430\u0436\u0434\u0430\u044f \u043a\u0440\u0438\u0432\u0430\u044f &#8212; \u044d\u0442\u043e \u0433\u0440\u0430\u0444\u0438\u043a \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u043d\u044b \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430. \u0411\u043e\u043b\u0435\u0435 \u0431\u043b\u0435\u043a\u043b\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 &#8212; \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0446\u0438\u043a\u043b\u044b \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e &#8212; \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u043f\u0443\u043b\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 &#171;\u0443\u0445\u043e\u0434\u044f\u0442 \u0432\u043f\u0440\u0430\u0432\u043e&#187; \u043f\u043e \u043e\u0441\u0438 \u0430\u0431\u0441\u0446\u0438\u0441\u0441. \u0422.\u0435. \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e (\u0435\u0441\u043b\u0438 \u0432\u0441\u0451 \u0441\u043b\u043e\u0436\u0438\u0442\u044c) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u0437\u043e\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 ThreadPool: \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439, \u043a\u043e\u0433\u0434\u0430 \u043c\u0435\u0436\u0434\u0443 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u043d\u0430 \u043f\u043e\u0442\u043e\u043a\u0435 \u043f\u0443\u043b\u0430 \u0438 \u0432\u0437\u044f\u0442\u0438\u0435\u043c \u0432 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0423\u0432\u0435\u043b\u0438\u0447\u0438\u043c \u0431\u043e\u043b\u0435\u0435 \u0437\u043d\u0430\u0447\u0438\u043c\u0443\u044e \u0447\u0430\u0441\u0442\u044c:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u0447\u0442\u043e \u043d\u0430 \u043c\u0430\u043b\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043b\u043e\u0436\u0430\u0442\u0441\u044f \u0431\u043b\u0438\u0436\u0435 \u043a \u043f\u0438\u043a\u043e\u0432\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c. \u0417\u0430\u0442\u0435\u043c \u043f\u0438\u043a\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0443, \u0437\u0430\u0442\u0435\u043c \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u043e \u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0441\u043d\u043e\u0432\u0430 \u043d\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0445\u0443\u0434\u0448\u0435\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0440\u0430\u0439\u043d\u0435 \u043f\u043b\u043e\u0445\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0434\u0435\u043b\u0435\u0433\u0430\u0442\u043e\u0432 \u043a\u0440\u0430\u0439\u043d\u0435 \u0432\u044b\u0441\u043e\u043a\u0430. \u041f\u043b\u044e\u0441 \u043a\u043e \u0432\u0441\u0435\u043c\u0443 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0431\u044a\u0435\u043c \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a \u0443\u0445\u043e\u0434\u0438\u0442 &#171;\u0445\u0432\u043e\u0441\u0442\u043e\u043c&#187; \u0432\u043f\u0440\u0430\u0432\u043e (\u0441\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u0433\u0440\u0430\u0444\u0438\u043a),\u00a0<em>\u0441\u0440\u0435\u0434\u043d\u044f\u044f<\/em>\u00a0\u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043c\u0435\u0449\u0435\u043d\u0430 \u0432\u043f\u0440\u0430\u0432\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043b\u0435\u0431\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0439\u043e\u043d\u0435 600 \u0442\u0430\u043a\u0442\u043e\u0432 \u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e.<\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0435, \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u044f\u0441\u043d\u0438\u0442\u044c: \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d\u044b \u0431\u043e\u0440\u044c\u0431\u043e\u0439 \u0437\u0430 \u0440\u0435\u0441\u0443\u0440\u0441. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 &#8212; \u0437\u0430 \u0433\u043e\u043b\u043e\u0432\u0443 \u0438 \u0445\u0432\u043e\u0441\u0442 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0437\u0430\u0434\u0430\u0447. \u0410 \u043f\u043e\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d\u044b \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u0430. \u0422\u0440\u0438 \u043f\u0438\u043a\u0430 &#8212; \u044d\u0442\u043e \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0431\u043e\u0440\u044c\u0431\u044b \u0437\u0430 \u043e\u0431\u0449\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441. \u0410 \u0442\u043e \u0447\u0442\u043e \u0438\u0445 \u0447\u0451\u0442\u043a\u043e \u0442\u0440\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0443\u043b \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0442\u0440\u0438 \u0440\u0430\u0437\u0430: \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0438 \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0431\u044a\u0451\u043c\u0430\u0445 \u0440\u0430\u0431\u043e\u0442. \u041f\u0440\u0438\u0447\u0451\u043c \u0434\u0435\u043b\u0435\u043b \u044d\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0447\u0435\u0440\u0435\u0437 \u0442\u0435 \u0436\u0435 \u0447\u0438\u0441\u043b\u0430 \u0443\u0440\u043e\u0432\u043d\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u0430.<\/p>\n<p>\u041d\u043e \u043e\u0431\u043e \u0432\u0441\u0451\u043c \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443.<\/p>\n<h2>\u0418\u0449\u0435\u043c \u0438\u0434\u0435\u0430\u043b<\/h2>\n<blockquote>\n<p> \u2620\ufe0f\u00a0<em>\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438<\/em>  <\/p>\n<\/blockquote>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f ThreadPool&#8217;\u0430 \u0442\u0430\u043a \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c \u0432 \u043d\u0430\u0448\u0438 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e \u0445\u043e\u0440\u043e\u0448\u0435\u043c \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 \u043a\u043e\u0434\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 \u043a \u043a\u043e\u0434\u0443 \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u043f\u0443\u043b\u0430 5% \u043a 95%:  <\/p>\n<pre><code class=\"cs\">unsafe void TraceWork(object x) { var rd = rdtsc();  ulong sum = (ulong)rd; for (int i = 0; i &lt; 600; i++) { sum = sum + (ulong)i; } var end = rdtsc(); bag.Enqueue(new Record {  Ticks = end - rd - rdtscCallCost, TID = Environment.CurrentManagedThreadId }); }<\/code><\/pre>\n<p><code>Ticks<\/code>\u00a0\u0431\u0443\u0434\u0435\u0442 \u0432\u0430\u0440\u044c\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 4700 \u0442\u0430\u043a\u0442\u043e\u0432 (\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u0440\u044c\u0438\u0440\u0443\u0435\u0442\u0441\u044f). \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432\u0435\u0440\u043d\u0451\u043c \u043a\u043e\u0434 \u0434\u043b\u044f \u0437\u0430\u043c\u0435\u0440\u0430 \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u043f\u0443\u043b\u0430:  <\/p>\n<pre><code class=\"cs\">unsafe void TraceWork(object x) { var rd = rdtsc(); var tid = Environment.CurrentManagedThreadId; var last = lastValues[tid];  ulong sum = (ulong)rd; for (int i = 0; i &lt; 600; i++) { sum = sum + (ulong)i; }  bag.Enqueue(new Record {  Ticks = rd - last - rdtscCallCost, TID = Environment.CurrentManagedThreadId });  lastValues[tid] = rdtsc(); }<\/code><\/pre>\n<p>\u0427\u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c:  <\/p>\n<figure class=\"full-width\"><figcaption>\u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 5% \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u043a 95% \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435. \u041d\u0435 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e<\/figcaption><\/figure>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0442\u0440\u0430\u0448\u043d\u043e. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0438\u0445 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435: \u0442\u0430\u043a \u043b\u0438 \u043c\u043d\u043e\u0433\u043e &#171;\u043f\u0438\u043a\u043e\u0432\u044b\u0445&#187; \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439.<\/p>\n<figure class=\"full-width\"><figcaption>\u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 5% \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u043a 95% \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435. \u041e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043f\u043e \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438<\/figcaption><\/figure>\n<p>\u0418 \u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0434\u0440\u0430\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0434\u043e\u00a0<code>100_000<\/code>\u00a0\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439. \u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0441\u0442\u0430\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0440\u0430\u0432\u043d\u0430 87,000 \u0442\u0430\u043a\u0442\u0430\u043c, \u0447\u0442\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0431\u043e\u043b\u0435\u0435\u00a0<code>99%<\/code>\u00a0\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u044b (\u0438\u0441\u043b\u0438 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441 \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438). \u0422\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a \u0441\u0442\u0430\u043b\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043e\u043a\u043e\u043b\u043e 550 \u0442\u0430\u043a\u0442\u043e\u0432, \u0447\u0442\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0434\u0435\u0430\u043b:  <\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u0438\u043c\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c\u0438 \u0438 \u043f\u0443\u043b\u0430\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u0430\u043a\u0438\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u0445, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0443\u0434\u0438\u0442\u044c \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430 (ThreadPool, .NET 5\/.NET 6 (\u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e))  <\/p>\n<h4>\u041b\u0435\u0433\u0435\u043d\u0434\u0430 \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c:<\/h4>\n<ul>\n<li>\n<p><strong>\u0418\u0442\u0435<\/strong><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-330261","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/330261","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=330261"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/330261\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=330261"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=330261"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=330261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}