libuv, kahi waihona puke cross-platform i hoʻohana ʻia i nā papahana he nui no ke kākoʻo I/O

libuv

ʻO libuv kahi waihona kākoʻo cross-platform me ka nānā ʻana i ka asynchronous I/O.

Ua kaulana ʻia ka hoʻokuʻu ʻana o ka mana hou o ka waihona libuv 1.45.0, ka mea i hoʻohana nui ʻia no ka hoʻopili multiplexing a me ka hoʻoponopono I/O asynchronous i nā papahana he nui e pili ana i ka hana kiʻekiʻe o ka hoʻoili ʻana i nā faila a me nā noi pūnaewele, no ka laʻana, ma ka platform Node.js, BIND 9, a me Knot.

No ka poʻe ʻike ʻole e pili ana i ka libuv, pono lākou e ʻike i kēia he waihona C cross-platform e hāʻawi i ke kākoʻo no ka I/O asynchronous ma muli o nā puka lou hanana. Kākoʻo ia i ka epoll Windows kqueue IOCP, nā awa hanana Solaris a ma Linux ʻo ia kekahi o nā hale waihona puke e kākoʻo ana i ka io_uring.

E pili ana i ka libuv

libuv ua hoʻolālā mua ʻia no ka hoʻohana ʻana ma Node.js, akā hoʻohana ʻia e nā papahana polokalamu ʻē aʻe. Ma mua, he abstraction a puni libev a i ʻole Microsoft IOCP, ʻoiai ʻaʻole kākoʻo ʻo libev iā IOCP ma Windows.

Waihona Puke hiki iā ʻoe ke hoʻonohonoho i kahi loop blocking o nā hanana e hoʻohana ana i nā ala e like me epoll ma Linux, kqueue ma BSD a me macOS, IOCP ma Windows, a me nā awa hanana ma Solaris

O ka nā hiʻohiʻona koʻikoʻi o libuv:

  • Kākoʻo ʻia ka loop hanana hanana piha e ka epoll, kqueue, IOCP, nā awa hanana
  • Nā kumu TCP a me ka UDP Asynchronous
  • Hoʻoholo DNS Asynchronous
  • Nā hana asynchronous o nā faila a me nā ʻōnaehana faila
  • Nā hanana ʻōnaehana waihona
  • Kākoʻo ʻo TTY i ke code pakele ANSI
  • IPC me ke kaʻana like ʻana, me ka hoʻohana ʻana i nā kumu kikowaena Unix a i ʻole nā ​​​​paipu i kapa ʻia (Windows)
  • Kaʻina hana lua
  • kolamu milo
  • hōʻailona lawelawe
  • uaki hoʻonā kiʻekiʻe
  • ʻO nā hiʻohiʻona o ka threading a me ka synchronization primitives

Loaʻa nā hiʻohiʻona cross-platform no nā noi e hana pū me nā pilina pūnaewele TCP a me UDP ma ke ʻano asynchronous, asynchronous DNS resolution, asynchronous hana me nā faila, file system event tracking, IPC organization for socket sharing, hoʻonohonoho ʻana i kahi hōʻailona hōʻailona kolamu a hoʻohana kiʻekiʻe-pololei timers.

Waihona Puke komo pū me nā primitives e hoʻonohonoho i ka hoʻokō multi-threaded a me ka hoʻonohonoho ʻana i ka pae. Me ka hanana hanana, ʻelua mau kumu kumu abstract kiʻekiʻe i hoʻohana ʻia: "handlers" e hoʻokō i nā mea lōʻihi e hana i nā hana he nui, a me nā "noi" e hana i nā noi pōkole.

ʻO nā hiʻohiʻona hou o libuv 1.45

ʻO kahi hoʻomaikaʻi nui i ka mana hou ʻo ia ka ka hoʻokō ʻana i ke kākoʻo lōʻihi no ka io_uring asynchronous I/O interface Hāʻawi ʻia e ka Linux kernel mai ka mana 5.1.

Ma waho aʻe o kēia, e hōʻike ana i ka kākoʻo no ke koho balota I/O a me ka hiki ke hana me ka pale ʻole Me ka io_uring API, ua hoʻāʻo nā mea hoʻomohala kernel e hoʻoponopono i nā hemahema o ka interface aio kahiko. Ma ke ʻano o ka hana, kokoke loa ʻo io_uring iā SPDK a ʻoi aku ka maikaʻi ma mua o ka libaio ke hiki ke koho.

ma libuv, hiki ke hoʻohana ʻia ka io_uring interface ma nā kahua Linux me ka kernel 5.1+ i nā ʻano hana hoʻopunipuni asynchronous e like me ka heluhelu, kākau, fsync, fdatasync, stat, fstat, a me lstat. Ma nā ʻōnaehana hana ʻē aʻe a me nā ʻōnaehana me nā kernels kahiko, hoʻohana mau ʻia ka wai puna.

Ua ʻōlelo ʻia ua hōʻike ʻia nā hoʻokolohua hana i ka hoʻohana ʻana i ka io_uring i libuv hiki ke hoʻokō i ka piʻi ʻana o ka hana 8x. Ua kākoʻo ʻia ka hana o ka hoʻohui ʻana i ka io_uring i libuv e ka ISC (Internet Systems Consortium), nāna e hoʻohana i ka waihona i nīnau ʻia ma ka server BIND DNS.

ʻO nā hoʻomaikaʻi ʻē aʻe i ka mana hou e pili ana i ka e hoʻonohonoho ana i hoʻokahi puʻu 8 MB no ka puna wai ma nā hale hana a pau a me nā paepae.

Kākoʻo ʻia ʻia hoʻi hoʻohui i kahi API hou uv_metrics_info() e hōʻiliʻili i nā ana, e like me ka helu ʻike ma ka hanana hanana, ka huina o nā hanana i hana ʻia, a me ka helu o nā hanana e kali ana ma ka pila i ka manawa i hoʻouna ʻia ai ke noi.

Ma ka hopena, Inā makemake ʻoe e ʻike hou e pili ana i ia, pono ʻoe e ʻike ua kākau ʻia ke code papahana ma C a ua māhele ʻia ma lalo o ka laikini MIT. Hiki iā ʻoe ke nānā i nā kikoʻī I ka loulou aʻe. 


Hoʻopili ka ʻike o ka ʻatikala i kā mākou kumumanaʻo o ka hoʻoponopono hoʻoponopono. E hōʻike i kahi kaomi hemahema ʻaneʻi.

E lilo i mea mua e wehewehe

E waiho i kāu manaʻo

Kāu leka uila aae? E,ʻaʻole e paʻiʻia. i hāliu aku i koi 'ia kula *

*

*

  1. He kuleana no ka ʻikepili: Miguel Ángel Gatón
  2. Ke kumu o ka ʻikepili: kaohi SPAM, hoʻokele ʻōlelo.
  3. Legitimation: Kou ʻae
  4. Ka kamaʻilio ʻana o ka ʻikepili: ʻaʻole e hōʻike ʻia ka ʻikepili i nā ʻaoʻao ʻekolu koe ka mana o ke kānāwai.
  5. Pūnaewele mālama: Pūnaewele i mālama ʻia e Occentus Networks (EU)
  6. Nā Kuleana: I kēlā me kēia manawa hiki iā ʻoe ke palena, hoʻōla a kāpae i kāu ʻike.