Hoʻopili mākou i ka C ++ i hoʻokahi kaula me ka Rust multi-threaded
Hoʻopili mākou i ka C ++ i hoʻokahi kaula me ka Rust multi-threaded Hāʻawi kēia loiloi piha o interfaced i ka nānā kikoʻī o kāna mau ʻāpana kumu a me nā hopena ākea. Nā Wahi Koʻikoʻi Kūkū ka kūkākūkā ma: Mekini kumu...
Mewayz Team
Editorial Team
Loaʻa mākou i ka C++ Uila Hoʻokahi me ka Rust Uila Nui
ʻAʻole hiki wale ke hoʻopili ʻana i ka code C++ i hoʻokahi kaula me ka Rust multi-threaded — ʻo ia kekahi o nā ala kūpono loa e hoʻololi i nā ʻōnaehana hoʻoilina me ka ʻole o ke kākau hou ʻana. Ma Mewayz, ua hoʻoponopono mākou i kēia paʻakikī i ka wā e hoʻonui ana i kā mākou ʻoihana ʻoihana 207-module e lawelawe i nā mea hoʻohana 138,000, a ua hoʻololi maoli nā hopena i ko mākou manaʻo e pili ana i ka launa pū ʻana o nā ʻōnaehana.
No ke aha ʻoe e hoʻopili ai i ka C++ i hoʻokahi kaula me ka Rust i hoʻohana ʻia?
ʻO ka hapa nui o nā ʻōnaehana hana e lawe i nā makahiki o ka code C++ i hoʻāʻo ʻia i ke kaua. ʻO ke kākau hou ʻana i nā mea āpau ma Rust ke kani ʻia ma ka pepa, akā hoʻolauna ia i ka pilikia nui a me nā mahina o ka manawa ʻenehana. ʻO ke ʻano pragmatic ka hoʻohana ʻana i ka hoʻonui ʻia - ka hoʻopili ʻana i ka loina C++ i kēia manawa aʻo ka hoʻouka ʻana i nā haʻahaʻa hana koʻikoʻi i ke kumu hoʻohālike o Rust.
Ma kā mākou hihia, ua holo hilinaʻi nā modules logic pāʻoihana koʻikoʻi i ka C++ threaded hoʻokahi no nā makahiki. Ua mālama lākou i ka hoʻoili ʻana i ka hana, ka hana palapala, a me ka helu kālā. Akā i ka ulu ʻana o kā mākou waihona mea hoʻohana ma mua o 100K, pono mākou i ka hoʻoili ʻana i ka ʻikepili like, ka lawelawe ʻana i ka API, a me ka hoʻokele mokuʻāina palekana. ʻO nā hiʻohiʻona Send a me Sync o Rust i hāʻawi mai iā mākou i ka hōʻoiaʻiʻo ʻana i ka manawa hoʻohui like ʻole ʻaʻole hiki iā C++ ke hāʻawi me ka ʻole o ka loiloi lima nui.
ʻO ka hoʻoikaika nui ʻo ka hōʻemi pilikia. Mālama ʻoe i ka hana, a hoʻohui ʻoe i nā unahi - me ka pili ʻole i kāu codebase holoʻokoʻa ma kahi neʻe ʻana ʻaʻole e pau.
Pehea ka hana ʻana o ka palena ʻo FFI?
Ke hana nei ka Foreign Function Interface (FFI) ma waena o C++ a me Rust ma o nā pūlima hana like C. ʻO nā poloka waho "C" ka Rust e hōʻike i nā hana i hiki iā C++ ke kelepona pololei, a ʻo ia hoʻi. Puka mai ka luʻi koʻikoʻi i ka wā e pono ai ka holo ʻana o nā loina nui a Rust e hoʻohana i ka code C++ milo hoʻokahi me ka palekana.
Ua hoʻoholo mākou i kēia me ka hoʻohana ʻana i ka hale hana hoʻolaʻa:
- Ka mea hoʻokō C++ i hoʻopaʻa ʻia i ka thread: Hoʻoheheʻe ʻia nā kelepona C++ a pau ma o ka pae hoʻokahi i hoʻolaʻa ʻia me ka hoʻohana ʻana i kahi alahele hoʻouna memo, e hōʻoiaʻiʻo ana ʻaʻole e uhaki ʻia ka ʻano ʻokoʻa hoʻokahi.
- Rust async bridge layer: Hoʻouna nā hana Tokio i ka hana i ka C++ executor a
kalinā hualoaʻa ma o oneshot channels, e mālama pono ana i ka ʻaoʻao Rust asynchronous. - Ka hoʻomalu ʻana i nā kuhikuhi kikoʻī: Ua wahī ʻia nā mea C++ i nā hana Rust e hoʻokō ana i
Dropno ka hoʻomaʻemaʻe hoʻomaʻemaʻe ʻana, me ka pale ʻana i ka leʻaleʻa hoʻomanaʻo ma waena o ka palena ʻōlelo. - Ka Serialization ma ka palena: Hoʻopili ʻia nā hale ʻikepili paʻakikī iā FlatBuffers ma ka papa FFI, e pale ana i ka hoʻohālikelike ʻana i ka hoʻolālā ʻano palupalu a hiki ke hoʻololi kūʻokoʻa i kēlā me kēia ʻaoʻao.
- Hoʻokaʻawale weliweli: Hoʻopili ʻo Rust
catch_unwindi kēlā me kēia wahi hoʻokomo FFI i ʻole e hele ka makaʻu i ka palena ʻōlelo, ʻo ia ke ʻano i wehewehe ʻole ʻia.
Ua hāʻawi kēia ʻano hoʻohālike iā mākou i ka hiki ʻana o ka Rust multi-threaded me ka hilinaʻi o ka loiloi C++ i hōʻoia ʻia - me ka kākau ʻole ʻana i kahi laina hoʻokahi o nā lula ʻoihana mua.
He aha nā pōʻino nui loa e pale aku ai?
ʻO ka hewa pōʻino loa ʻo ka manaʻo ʻana ʻo C++ code he thread-safe inā ʻaʻole. ʻO ka mokuʻāina honua, nā ʻano like ʻole, a me nā kelepona hale waihona puke ʻaʻole e hoʻi hou e hoʻokau i nā lāhui ʻikepili i hiki ʻole i ka mea hoʻopili ʻo Rust ke ʻike ma waena o ka palena FFI. ʻO ka palekana palekana o Rust e kū ma ka poloka unsafe — nāu nā mea a pau o loko.
Nāʻike koʻikoʻi: Hōʻoiaʻiʻo ʻo Rust i ka palekana hoʻomanaʻo i loko o kāna code ponoʻī, akā i ka manawa e hele ai ʻoe i kahi palena FFI i C++, loaʻa iā ʻoe kēlā me kēia pilikia palekana palekana i loaʻa iā C++. ʻOi aku ka mea nui o ka hoʻolālā ʻana a puni ia palena ma mua o ke code ma kēlā ʻaoʻao kēia ʻaoʻao.
💡 DID YOU KNOW?
Mewayz replaces 8+ business tools in one platform
CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.
Start Free →
ʻO kekahi pilikia maʻamau ʻo ia ka hoʻokele ola. ʻAʻole komo nā mea C++ i ka mea hōʻaiʻē a Rust. Inā hāʻule ʻo Rust i kahi kuhikuhi i ka wā e paʻa ana ʻo C ++ i kahi kuhikuhi, loaʻa iā ʻoe nā pōpoki hoʻohana-ma hope o ka paʻakikī paʻakikī ke ʻike. Ua hoʻoponopono mākou i kēia ma ka hoʻokō ʻana i nā semantics nona ka manaʻo: C++ nā mea i hoʻohana mau ʻia e ka Rust wrapper ponoʻī, a ke komo kaʻana like me ka helu ʻana ma ka Arc-based reference ma ka ʻaoʻao Rust.
Hana nā kelepona FFI kiʻekiʻe loa mai ka hoʻololi pōʻaiapili a me ka serialization. Hoʻopaʻa mākou i nā hana i nā wahi āpau e hiki ai, e hoʻouna ana i kahi laina o nā mea hana i ka mea hoʻokō C++ ma mua o ka hana ʻana i nā kelepona ʻōlelo ʻokoʻa.
Pehea i hana ai kēia ʻano hana ma ka hana ʻana?
Ma hope o ka hoʻohana ʻana i ka hoʻolālā hybrid ma luna o kā mākou paepae, ua ana mākou i nā hoʻomaikaʻi paʻa. Ua hoʻonui ʻia ka noi throughput e 3.4x no nā modula i hoʻopili mua ʻia ma ka hoʻoili C++. Ua hāʻule ka lōʻihi o ka huelo (p99) i 61% no ka mea hiki i ka Rust runtime async ke hoʻoponopono i nā noi kūʻokoʻa i ka manawa like ʻoiai ʻo C++ i lawelawe i nā hana koʻikoʻi helu ma kāna pae i hoʻolaʻa ʻia.
ʻO ka mea nui loa, ʻaʻole mākou i pili i ka concurrency i loko o nā mahina ʻeono mua o ka hana ʻana. ʻO ke ʻano o ka hoʻopaʻa ʻana i ke kaula he mea hiki ʻole ke kāhea ʻia ke code C++ mai nā kaula he nui, ʻoiai ʻo ka ʻōnaehana ʻano o Rust i pale i nā lāhui ʻikepili ma kona ʻaoʻao o ka palena. He hoʻomaikaʻi koʻikoʻi kēia ma mua o kā mākou hana mua o ka hoʻāʻo ʻana e hoʻohui i ka threading i C++ me nā mutexes, ka mea i hoʻopuka i ʻekolu mau hanana lāhui i ka hapaha hoʻokahi.
Ua hōʻike pū ka hui ʻenekinia i nā pōʻai hoʻomaʻamaʻa wikiwiki. Hiki ke kūkulu ʻia nā hiʻohiʻona hou ma Rust me ke kākoʻo concurrency piha, ʻoiai e holo mau ana nā modula C++ me ka hoʻololi ʻole. ʻO kēia hoʻolālā hoʻonui ka manaʻo ʻaʻole mākou i loaʻa i ka neʻe ʻana o ka "big bang" kiʻekiʻe - ʻo ka hoʻomaikaʻi paʻa a hiki ke ana.
Nīnau pinepine
Hiki iā Rust ke kelepona i nā waihona puke C++ me ka hoʻololi ʻole?
ʻAe, akā pono ʻoe e hōʻoia i ka loaʻa ʻana o nā kelepona a pau i kēlā waihona mai kahi pae hoʻokahi. ʻO ke kumu maʻamau ka hana ʻana i kahi kaula hoʻokō i hoʻolaʻa ʻia e hoʻokaʻawale i nā kelepona C ++ a pau ma o kahi kahawai. Hoʻouna nā hana async a Rust i nā noi a kali i nā pane me ka pale ʻole i ka manawa holo multi-threaded. ʻAʻole pono ka hoʻololi ʻana o ka code C++ ponoʻī - ua hoʻokō ʻia ka palena palekana ma ka ʻaoʻao Rust.
He mea koʻikoʻi paha ka FFI ma luna o ke poʻo e pili ana i ka hana noi?
He liʻiliʻi loa ke kelepona FFI ma luna o ke poʻo — maʻamau ma lalo o 10 nanokekona no kahi kelepona hana maʻalahi. Eia nō naʻe, hoʻohui ʻia ka serialization o nā hale ʻikepili paʻakikī a me ka synchronization thread ma ka palena inā e hana ʻoe i nā kaukani kelepona maikaʻi. ʻO nā hana hoʻopaʻa ʻana a me ka hoʻohana ʻana i nā palapala serialization zero-cope e like me FlatBuffers a i ʻole Cap'n Proto e mālama ʻole ʻia ma luna o ke poʻo ma ke ʻano nui.
Pono anei mākou e kākau hou i kā mākou C++ codebase ma Rust ma mua o ka hoʻopili ʻana?
No ka hapa nui o nā hui, ʻo ka hoʻopili ʻana i ka hoʻohui ʻana ke ala palekana a wikiwiki hoʻi. Hoʻopuka ka kākau hou piha ʻana i nā mahina o ka pilikia ʻenehana me ka waiwai ʻole o ka mea hoʻohana a hiki i ka pau ʻana. Hiki i ka Interfacing ke hoʻouna i nā hoʻomaikaʻi koke, hōʻoia i ke ala Rust i ka hana ʻana, a neʻe i nā modules i kēlā me kēia manawa e pili ana i kahi e hāʻawi ai ka concurrency i ka hopena nui loa. E kākau hou i nā modula wale nō kahi i ʻoi aku ke kumukūʻai no ka mālama ʻana i ka palena FFI ma mua o ke kumu kūʻai o ke kākau hou ʻana.
Ma Mewayz, kūkulu mākou i nā ʻōnaehana e hoʻohālikelike - ma ka ʻenehana a me ka hana. ʻO kā mākou ʻoihana ʻoihana 207-module OS e kōkua i nā hui 138,000 e holo i nā kaila hana akamai e hoʻomaka ana ma $19/mahina. Inā ʻoe e hoʻokele ana i nā papahana, hana automating, a i ʻole ka hoʻonui ʻana i kāu ʻoihana, hoʻololi ʻo Mewayz i ke ʻano o kāu hana. E hoʻomaka i kāu hoʻāʻo manuahi ma app.mewayz.com a e ʻike i ka mea a ka OS ʻoihana hou e hana ai no kāu hui.
We use cookies to improve your experience and analyze site traffic. Cookie Policy