जहां तक मैं अब libgreen is not a part of Rust standard library समझता हूं। इसके अलावा मुझे एक अलग libgreen पैकेज नहीं मिल रहा है। कुछ विकल्प हैं - coroutine, जो अब के लिए वास्तविक हरे धागे प्रदान नहीं करता है, और green-rs, जो टूटा हुआ है। क्या मैं सही समझता हूं कि अब जंग में कोई हल्का गो-जैसी प्रक्रिया नहीं है?libgreen के साथ क्या हुआ?
उत्तर
आप सही वहाँ std
में कोई हल्के टास्किंग पुस्तकालय (या मुख्य वितरण के बाकी) है कि कर रहे हैं, कि green
संकलन नहीं है और है कि coroutine
अभी तक पूरी तरह सूत्रण पहलू को संभालने के लिए प्रतीत नहीं होता। मुझे इस जगह में किसी अन्य पुस्तकालय की जानकारी नहीं है।
क्या हुआ इसके लिए: उस समस्या से जुड़े आरएफसी — RFC 230 — जानकारी का कैननिक स्रोत है। सारांश यह है कि यह पाया गया कि जिस विधि से हरे रंग के थ्रेडिंग/आईओ को संभाला गया था (std
दोनों मॉडलों में सार करने की कोशिश की, जिससे उन्हें अंतःक्रियात्मक रूप से इस्तेमाल किया जा सके) डाउनसाइड्स के लायक नहीं थे। अब, std
का उद्देश्य केवल उपयोगी समर्थन की न्यूनतम आधार प्रदान करना है: आईओ/थ्रेडिंग के लिए, इसका मतलब ऑपरेटिंग सिस्टम कार्यक्षमता के लिए "पतला", सुरक्षित रैपर है। टिप्पणी में
इस https://aturon.github.io/blog/2016/08/11/futures/ और भी पढ़ें
reddit सेशुरुआत में, जंग केवल हरी सूत्र था। आखिरकार, यह का निर्णय लिया गया कि सिस्टम थ्रेड के बिना सिस्टम सिस्टम ... अजीब है। तो हमें उन्हें जोड़ने की जरूरत है। पसंद क्यों नहीं जोड़ें? चूंकि इंटरफेस समान हो सकता है, क्यों उन पर सार नहीं है, और आप केवल चुन सकते हैं कि आप कौन सा चाहते थे?
उसी समय, डिफ़ॉल्ट रूप से हरे धागे के साथ समस्याएं समस्याएं बन रही थीं। विभाजित ढेर धीमी सी इंटरऑप का कारण बनता है। उन्हें प्रबंधित करने के लिए आपको रनटाइम की आवश्यकता है, इसके अलावा, कुल अमूर्त एक अस्वीकार्य लागत पैदा कर रहा था। हरे धागे बहुत हरे रंग के नहीं थे। प्लस, वास्तव में किसी दिन रिलीज होने की आवश्यकता के साथ, निर्णय ट्रेडऑफ के संबंध में किए जाने की आवश्यकता है। और चूंकि जंग को माना जाता है, एक सिस्टम भाषा हो, जिसमें 1: 1 धागे होते हैं और मूल रूप से कोई रनटाइम एन: एम थ्रेड और रनटाइम से अधिक समझ में आता है। । तो libgreen हटा दिया गया था, इंटरफ़ेस 1: 1 थ्रेड केंद्रित होने के लिए फिर से किया गया था।
'रिलीज someday looming' इसका एक बड़ा हिस्सा है। हम जंग के साथ वास्तव में स्थिर होना चाहते हैं, और वास्तव में पर एक चीज करने के लिए सभी चीजों के साथ, हम एक इंटरफेस को क्रिस्टलाइज नहीं करना चाहते थे, हम खुश नहीं थे। बिल्ली, हमने कई पुस्तकालयों को खींच लिया जो कम से कम समान कारणों से रैंड की तरह महत्वपूर्ण हैं। इंजीनियरिंग ट्रेडऑफ के बारे में है, और हमने minimalism चुनने का फैसला किया। क्योंकि हम विंडोज की जरूरत है और इसके अलावा हम पुस्तकालय को बदलने के लिए एक महंगी में लॉक हो नहीं करना चाहती
Mio, हमारे लिए एक गैर स्टार्टर के रूप में async जंग के लिए आई/ओ चौखटे अन्य के सबसे कर रहे हैं, जो अनाथ हो सकता है।
विशेष रूप से सामान्य मामले में, यहां पूरी तरह से समझा जाता है। विशिष्ट मामले में, एमओओ के पास या तो विंडोज़ समर्थन होगा, या एमआईओ के विंडोज-विशिष्ट संस्करण को जारी किया जा रहा है, उच्च-स्तरीय पैकेज सभी प्लेटफार्मों के लिए सुविधाएं प्रदान करता है। और में इस मामले में, यह वर्तमान में जंग का उत्पादन कर रहा है, जो कि उत्पादन में भारी जंग का उपयोग कर रहा है, इसलिए इसे जल्द ही पर जाने की संभावना नहीं है। लेकिन, जब तक आप सक्रिय रूप से शामिल नहीं होते हैं, तो चीजों को जानना मुश्किल है, जो स्वयं ही एक मुद्दा है।
libgreen को हटाने में हमें सहज कारणों में से एक यह है कि आप विभिन्न प्रकार के आईओ करने के लिए अपनी खुद की पुस्तकालय लिख सकते हैं। 1.0 मजबूत कोर है कि हम हमेशा के लिए स्थिरीकरण के बारे में अच्छा महसूस करते हैं, अंतिम बिट नहीं। https://github.com/carllerche/mio जैसी लाइब्रेरी एसिंक आईओ जैसी चीजों को संभालने के विभिन्न तरीकों का परीक्षण कर सकती हैं, और, जब वे परिपक्व हैं, तो हम की आवश्यकता होने पर उन्हें हमेशा मानक लाइब्रेरी में वापस खींच सकते हैं। लेकिन इस बीच में, यह सिर्फ एक पंक्ति अपने Cargo.toml को करने के लिए उन में जोड़ने
और ऐसे पाठ:।
दुर्भाग्य से वे greenlet समर्थन डिब्बाबंदी क्योंकि उनकी थे समाप्त हो गया कर्नेल धागे से धीमा जो बदले में दिखाता है कि किसी को यह समझ में नहीं आया कि स्टैकलेस कोरआउट प्रभावी ढंग से उत्पन्न करने के लिए भाषा कंपाइलर कैसे प्राप्त करें (आश्चर्यजनक नहीं है, इंजीनियरों की संख्या इस दुनिया में कई तरह से वायर्ड नहीं है, लेकिन देखें अधिक जानकारी के लिए )। और उन्होंने async i/o को डिब्बाबंद किया क्योंकि libuv "धीमा" है (जो केवल इसलिए है क्योंकि यह केवल एकल धागा है, साथ ही एक malloc + free per async ऑपरेशन को बाध्य करता है क्योंकि बफर को पूरा होने तक तक चलना चाहिए, साथ ही यह लागू करता है तुल्यकालिक से अधिक जुर्माना आई/ओ http://blog.kazuhooku.com/2014/09/the-reasons-why-i-stopped-using-libuv.html), जो एक वास्तविक शर्म की बात है था देखते हैं - वे करने का अवसर ले लिया है चाहिए कुछ बेहतर (संकेत के साथ libuv बदल देते हैं: ASIO + AFIO, और हाँ मैं जानता हूँ कि वे दोनों सी हैं ++, लेकिन जंग की तुलना में बहुत बेहतर सी ++ इंटरऑप के साथ कर सकती है, वर्तमान में वर्तमान में कोई भी नहीं है) कैनिंग के बजाय हमेशा-एसिंक-सब कुछ जो कि एक अद्भुत कदम हो सकता है सी ++ से अधिकांश टी के साथ वह Erlang के के नुकसान के बिना Erlang के लाभ।
इसके अलावा "* कारणों में से एक जिसे हम लेबग्रीन को हटाने में सहज थे, यह है कि आप विभिन्न प्रकार के आईओ * (एक ही लिंक) करने के लिए अपनी खुद की पुस्तकालय लिख सकते हैं। सी ++ की तरह, (हरा) थ्रेडिंग पहले लाइब्रेरी के रूप में लागू किया जा सकता है। – ArtemGr
मैंने उस पोस्ट पर कुछ टिप्पणियां छोड़ीं, मुझे लगता है कि यह एक अधूरा परिप्रेक्ष्य है। –
स्पष्टीकरण – rofrol
नए आने वालों के लिए, अब may
है, जो एक क्रेट है जो गोरोटिन के समान हरे धागे को लागू करता है।
- 1. php_mysql.dll के साथ क्या हुआ?
- 2. regtlibv12 के साथ क्या हुआ?
- 3. syscalls.h के साथ क्या हुआ?
- 4. ओमनीएक्सएमएल के साथ क्या हुआ?
- 5. एक्लिप्स के जेएसडीटी के साथ क्या हुआ?
- 6. 2008 में दोजो के साथ क्या हुआ?
- 7. डार्ट में स्ट्रिंगडेकोडर के साथ क्या हुआ?
- 8. आस्पेक्ट ओरिएंटेड प्रोग्रामिंग के साथ क्या हुआ?
- 9. एनवीडी 3 के साथ क्या हुआ?
- 10. qt4 में QListViewItem के साथ क्या हुआ?
- 11. जावा बाइनरी संगतता के साथ क्या हुआ?
- 12. WPF 4: DataGridColumnHeader के साथ क्या हुआ?
- 13. आरएक्स स्विच() ऑपरेटर के साथ क्या हुआ?
- 14. टीएमपी पर्यावरण चर के साथ क्या हुआ?
- 15. एंड्रॉइड एएपीटी के साथ क्या हुआ?
- 16. सीएफएफआई-यूनिक्स के साथ क्या हुआ?
- 17. emacs 'जावा के साथ क्या हुआ?
- 18. पायथन + जेएसओएन, किसी के साथ क्या हुआ?
- 19. HttpClient 4 - MultThreadedHttpConnectionManager के साथ क्या हुआ?
- 20. डेलट्री के साथ क्या हुआ, और इसका प्रतिस्थापन क्या है?
- 21. पीई के लिए विकल्प के साथ क्या हुआ?
- 22. .NET के लिए आरएक्स - शेड्यूलर के साथ क्या हुआ। डिस्पैचर?
- 23. बैश स्क्रिप्ट: $ के साथ शुरू हुआ! के बजाय #! और रहस्यमय व्यवहार मिला। क्या हुआ?
- 24. घड़ी रहित कंप्यूटर चिप्स के साथ क्या हुआ?
- 25. jgoodies बाध्यकारी ट्यूटोरियल कोड के साथ क्या हुआ?
- 26. python में thread.start_new_thread के साथ क्या हुआ 3
- 27. टाइपों के साथ क्या हुआ। पाइथन 3 में क्लास टाइप?
- 28. Google क्रोम में मेरे टेक्स्ट छाया के साथ क्या हुआ?
- 29. windows.h में WINVER और _WIN32_WINNT गार्ड के साथ क्या हुआ?
- 30. Grails 1.4 - ApplicationHolder, ConfigurationHolder, आदि के साथ क्या हुआ?
कुछ अन्य संबंधित चीजें: [थ्रेडपूल] (https://crates.io/crates/threadpool), [mio] (https://github.com/carllerche/mio)। –
सेकेंडिंग क्रिस की टिप्पणी: कोई भी आकार-फिट नहीं है-जब हरी-थ्रेडिंग की बात आती है, तो आपको अपना व्यापार-बंद चुनना होगा। –