рдиреЛрдб.рдЬреЗрдПрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЗрдЦ рдЬреЛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕-рдЗрд╡реЗрдВрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдпрд╣ рдЕрдВрджрд░ рд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ "рд▓реВрдкреНрдб" рд╕рд░реНрдХрд▓ рдХреЗ рд╕рд╛рде рдорд╛рдирдХ рдЪрд┐рддреНрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдк рдХрдо рд╕реЗ рдХрдо рдПрдХ рдирдЬрд╝рд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЪрдХреНрд░ рдХреНрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рд╣реИрдВред

рдмрдВрдзрди
рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд▓реЗрдЦ рдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рд╛рдЗрд▓ рдУрдкрди рдСрдкрд░реЗрд╢рди рдХреЗ рдЖрд╕рдкрд╛рд╕ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЕрд░реНрдерд╛рддред
рдПрдлрдПрд╕ рдореЙрдбреНрдпреВрд▓ рд╕реЗ
рдЦреБрд▓реЗ рдХрд╛рд░реНрдпред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд░рд╣реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдзрд╛рд░рдгрд╛ рдФрд░ рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг рдХреЗ рдмреАрдЪ рд╕рдордЭреМрддрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
require('fs').open("c:\\1.txt", 'r', function onOpen(err, result){ console.log("Result: ", result); });
IOCP
рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ Node.js рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЛ IOCP рддрдХрдиреАрдХ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдкреВрд░реНрдгрддрд╛ рдкреЛрд░реНрдЯ рдПрдХ рдРрд╕реА рддрдХрдиреАрдХ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ I / O рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп CreateIoCompletionPort () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ IOCP рдкреЛрд░реНрдЯ рд╣реИред рд╣рдо рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЗрд╕ рддрдереНрдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ IOCP рдкреЛрд░реНрдЯ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдИрд╡реЗрдВрдЯ рдХрддрд╛рд░ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИред PostQueuedCompletionStatus () рдлрд╝рдВрдХреНрд╢рди рдЗрд╡реЗрдВрдЯ рдХреЛ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ, рдФрд░ GetQueuedCompletionStatus () рдлрд╝рдВрдХреНрд╢рди рдЗрд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдХрддрд╛рд░ рдЦрд╛рд▓реА рд╣реИ, рддреЛ рдкрд╣рд▓реА рдШрдЯрдирд╛ рд╣реЛрдиреЗ рддрдХ GetQueuedCompletionStatus рдирд╛рдордХ рдереНрд░реЗрдб рдирд┐рд▓рдВрдмрд┐рдд рд╣реИред

рдкреНрд░рд╛рд░рдВрдн
рдЕрдм, рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╕реАрдзреЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо node.js. рдХреЛ рдЖрд░рдореНрдн рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░, рдПрдХ
рд╡рд┐рд╢реЗрд╖ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдИ рдЬрд╛рддреА
рд╣реИ рдЬреЛ рдИрд╡реЗрдВрдЯ рд▓реВрдк рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ , рдЪрд▓реЛ рдЗрд╕реЗ рд▓реВрдк рдХрд╣рддреЗ рд╣реИрдВред рдЕрдиреНрдп рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ, рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ IOCP рдкреЛрд░реНрдЯ рдФрд░ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдз рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рд▓рд┐рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рдкреВрд░реНрдгрд╛рдВрдХ рдЪрд░ req_count рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реВрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЬрдм рд▓реВрдк рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ IOCP рдкреЛрд░реНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
iocp _handle= CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 1);

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

рдЪреМрдерд╛, рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдФрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрддреНрдкрдиреНрди рд╕реНрдЯреНрд░реАрдо PostQueuedCompletionStatus () рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ IOCP рдХрддрд╛рд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдУрдкрди рдЗрд╡реЗрдВрдЯ рдХреЛ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, PostQueuedCompletionStatus рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, fs_open_req рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдИрд╡реЗрдВрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЪрдХреНрд░ред
рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдХреЗ рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдкрд░, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдХрд╛рдЙрдВрдЯрд░ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдХреЛрдИ рдкрдВрдЬреАрдХреГрдд рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рд╡рд╣рд╛рдБ рд╣реИ, рддреЛ GetQueuedCompletionStatus () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдпрд╛ рддреЛ рдЕрдЧрд▓реА рдШрдЯрдирд╛ рджреЗрддрд╛ рд╣реИ, рдпрд╛, рдЕрдЧрд░ рдХреЛрдИ рдШрдЯрдирд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддрдм рддрдХ рдереНрд░реЗрдб рдХреЛ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░ рджреЗрддрд╛ рд╣реИ рдЬрдм рддрдХ рд╡реЗ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░, GetQueuedCompletionStatus рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдШрдЯрдирд╛ рд▓реМрдЯрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде fs_open_req рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд▓рд┐рдВрдХ рд╣реЛрдЧрд╛ред рдЕрдЧрд▓рд╛, node.js рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдХрдо рдХрд░реЗрдЧрд╛ рдФрд░ рдХреЙрд▓рдмреИрдХ рдСрдирдСрди рд╢реБрд░реВ рдХрд░реЗрдЧрд╛, рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрд╕реЗ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЦреЛрд▓рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖
рд╡рд╣, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреЗрдЯрд╡рд░реНрдХ I / O рд╕рдВрдЪрд╛рд▓рди рдереЛрдбрд╝реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ IOCP рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд▓реА рдмрд╛рд░ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред