लुआ coroutines पर एक नज़र डालें ऑपरेटिंग सिस्टम अर्थ में धागे के रूप में एक ही बात नहीं कर रहे हैं।
ओएस थ्रेड्स प्रीपेप्टिव हैं। इसका मतलब है कि वे मनमाने ढंग से समय पर चलेंगे, ओएस द्वारा निर्धारित टाइमलाइसेस चोरी करेंगे। यदि वे उपलब्ध हैं तो वे विभिन्न प्रोसेसर पर चले जाएंगे। और वे एक ही समय में जहां भी संभव हो सकते हैं।
लुआ कोरौटाइन्स ऐसा नहीं करते हैं। Coroutines प्रकार "धागा" हो सकता है, लेकिन एक बार में केवल एक कोरआउट सक्रिय हो सकता है। एक कोरआउटिन तब तक चलेगा जब तक कोरआउट स्वयं coroutine.yield
कमांड जारी करके दौड़ना बंद कर देता है। और एक बार यह पैदा होने के बाद, यह तब तक नहीं चलेगा जब तक कि कोई अन्य दिनचर्या उस विशेष कोरआउटिन को coroutine.resume
कमांड जारी न करे।
लुआ coroutines सहकारी बहु सूत्रण, जिसके कारण वे सह दिनचर्या कहा जाता है प्रदान करते हैं। वे एक-दूसरे के साथ सहयोग करते हैं। एक समय में केवल एक चीज चलती है, और जब आप कार्य स्पष्ट रूप से ऐसा करते हैं तो आप केवल कार्य स्विच करते हैं।
आपको लगता है कि आप केवल ओएस थ्रेड बना सकते हैं, लुआ में कुछ कोरआउटिन बना सकते हैं, और फिर बस एक अलग ओएस थ्रेड में प्रत्येक को फिर से शुरू कर सकते हैं। यह तब तक काम करेगा जब प्रत्येक ओएस थ्रेड एक अलग लुआ instance
में कोड निष्पादित कर रहा था। लुआ एपीआई पुनर्वित्त है; आपको विभिन्न ओएस धागे से कॉल करने की अनुमति है, लेकिन केवल यदि अलग लुआ उदाहरणों से कॉल कर रहे हैं। यदि आप एक ही लुआ उदाहरण के माध्यम से बहुसंख्यक करने की कोशिश करते हैं, तो लुआ शायद अप्रिय चीजें करेगा।
सभी लू थ्रेडिंग मॉड्यूल मौजूद हैं जो प्रत्येक धागे के लिए वैकल्पिक लुआ उदाहरण बनाते हैं। Lua-lltreads बस प्रत्येक धागे के लिए एक पूरी तरह से नया लुआ उदाहरण बनाता है; नए धागे को पारित पैरामीटर की प्रतिलिपि बनाने के बाहर थ्रेड-टू-थ्रेड संचार के लिए कोई एपीआई नहीं है। LuaLanes कुछ क्रॉस-कनेक्टिंग कोड प्रदान करता है।
स्रोत
2011-06-17 16:51:18