एक छोटी एम्बेडेड सिस्टम प्रोजेक्ट पर हमारे पास कुछ कोड है जिसे हम थ्रेड में चलाना चाहते हैं ताकि हम एक एम्बेडेड आरटीओएस (ईकोस) के शीर्ष पर निर्माण करने का चुनाव कर रहे हों।क्या यह एक आरटीओएस और चक्रीय कार्यकारी मिश्रण करने के लिए समझ में आता है?
पहले, हमने मुख्य() में एक चक्रीय कार्यकारी का उपयोग किया है जो प्रत्येक राज्य मशीन के रूप में लागू कार्यों को चलाता है। कुछ कार्यों के लिए हमें उन समस्याओं का सामना करना पड़ा जहां कार्य को कई अच्छे अनाज वाले राज्यों में तोड़ने की आवश्यकता होगी जिससे कोड अतिरिक्त जटिल हो सके।
किसी आरटीओएस पर स्विच करते समय हमें पता चला कि प्रत्येक धागे के ढेर के लिए मेमोरी उपयोग तेजी से बढ़ता है यदि हम प्रत्येक अलग कार्य को अपना स्वयं का धागा देते हैं। (हमारे पास केवल 64k है और हमारे संचार बफर के लिए स्मृति की आवश्यकता है)
हम अपने संचार कार्य और चक्रीय कार्यकारी के लिए एक अन्य धागे के लिए एक ट्रेड का उपयोग करने पर विचार कर रहे हैं। चक्रीय कार्यकारी अन्य तार्किक कार्यों को चलाएगा।
क्या ऐसा आरटीओएस और चक्रीय कार्यकारी को मिश्रण करने के लिए समझ में आता है?
प्रीपेप्टिव थ्रेडिंग क्षमता हमें संचार कार्य में अत्यधिक जटिल राज्य मशीन बनाने से बचने की अनुमति देती है। संचार भाग के लिए धागा होने से कोड बहुत सीधे आगे है। यदि हमने इसे हर बिंदु पर एक राज्य में तोड़ दिया है जिसमें वर्तमान में नींद (1000) प्रकार का ब्लॉक है, तो कोड मूल रूप से बहुत छोटे राज्यों का स्पेगेटी कोड गड़बड़ होगा। यह किया जा सकता है, हालांकि, हम कोड को स्वच्छ और रखरखाव रखने के बजाय रखेंगे। अन्य राज्य मशीन सरल से कुछ हद तक जटिल होती है (एक में ~ 15 राज्य होते हैं)।संचार राज्य मशीन और भी सह होगा – JeffV