2016-03-22 6 views
6

टारनटूल में, तंतुओं का उपयोग किया जाता है जब लुआ कोड लेखक टारनटूल को निष्पादन को शेड्यूल करना चाहता है? सह-रूटीन (टारनटूल/लुआजिट प्रक्रिया में) का उपयोग किया जाता है जब लुआ कोड लेखक निष्पादन के नियंत्रण में होना चाहता है?फाइबर का उपयोग कब करें और टारनटूल में सह-दिनचर्या का उपयोग कब करें?

+2

टारनटूल में, फाइबर कोरआउट के समानार्थी होते हैं। हमारा सुझाव है कि आप हमेशा लुआ कोरौटाइन की बजाय हमारे फाइबर का उपयोग करें, क्योंकि वे अधिक शक्तिशाली हैं। हमारा पूरा I/O स्टैक उनके साथ एकीकृत है: सॉकेट, फाइलें, net.box, mysql, postgresql, आदि – Kostja

+1

कुछ ऐसे कार्य हैं जो कोररेटिन का उपयोग इटरेटर की तरह किया जा सकता है। यह एक साथ कोरआउट और फाइबर दोनों का उपयोग करने के लिए पूरी तरह से मान्य है लेकिन इससे भ्रम पैदा हो सकता है। कोरोटाइन उपज सी-कॉल सीमा पार करने के लिए एक कुख्यात 'प्रयास के साथ असफल हो सकती है, जबकि फाइबर इस स्थिति में काम करते हैं। –

उत्तर

6

टारनटूल में, फाइबर कोरआउट के समानार्थी होते हैं। फाइबर टारनटूल I/O आदि के लिए अधिक एकीकृत हैं, आपको लुआ कोरौटाइन के बजाय उनका उपयोग करना चाहिए। हमारा सुझाव है कि आप हमेशा लुआ कोरौटाइन की बजाय हमारे फाइबर का उपयोग करें, क्योंकि वे अधिक शक्तिशाली हैं। हमारे पूरे आई/ओ ढेर उन लोगों के साथ एकीकृत है: सॉकेट, फ़ाइलें, net.box, mysql, PostgreSQL, आदि

डॉक्स के लिए लिंक: http://tarantool.org/doc/reference/fiber.html

कुछ कार्यों कि coroutines लिए इस्तेमाल किया जा सकता है, की तरह हैं iterators। यह एक साथ कोरआउट और फाइबर दोनों का उपयोग करने के लिए पूरी तरह से मान्य है लेकिन इससे भ्रम पैदा हो सकता है। Coroutine उपज एक कुख्यात attempt to yield across C-call boundary के साथ विफल हो सकता है, जबकि फाइबर इस स्थिति में काम करते हैं।

+0

शीघ्र उत्तर के लिए धन्यवाद। –

+0

क्या कोई अन्य नकारात्मक दुष्प्रभाव देखने के लिए हैं? – aleclarson

3

फाइबर स्टैक एक कोरआउटिन से बड़ा है। यह 64 केबी के लिए mmapped है, और कम से कम एक ओएस पेज (आमतौर पर 4 केबी) है। फाइबर संदर्भ स्विचिंग अतिरिक्त ओवरहेड में पड़ता है, क्योंकि यह कोरआउटिन को छिपाने/बहाल करने के अलावा रजिस्टरों को छुपाता/पुनर्स्थापित करता है। फाइबर संदर्भ स्विच लुआजिट में जेआईटी तोड़ता है, क्योंकि लुजाज ट्रेस किए गए निष्पादन को छुपा/बहाल करने में सक्षम नहीं है। कोरआउट के विपरीत, फाइबर सभी गैर-अवरुद्ध आईओ के साथ अच्छी तरह से काम करते हैं जो अनुप्रयोग सर्वर में बनाया गया है: जब भी एक फाइबर आईओ कॉल पर अंतर्निहित रूप से पैदा होता है, तो दूसरा फाइबर अंदर आ जाता है। लेकिन एक अन्य कोरआउटिन नहीं, निश्चित रूप से, आपको देखभाल करना होगा यदि आप उनका उपयोग कर रहे हैं तो यह स्वयं का है।

संबंधित मुद्दे