2013-02-01 38 views
8

मुझे ऑब्जेक्ट्स को क्रमबद्ध करने और डिस्क पर सहेजे जाने के बारे में पता है, लेकिन वास्तव में थ्रेड सीरियलाइजेशन का क्या अर्थ है? क्या कोई इस पर मेरी मदद कर सकता है और मुझे सही दिशा में इंगित कर सकता है?सी ++ में थ्रेड क्रमबद्धता से इसका क्या अर्थ है?

उत्तर

10

आप सही हैं कि ये serialization के दो अलग-अलग अर्थ हैं। आप data serialization से परिचित हैं जो डेटा संरचना को कुछ कैनोलिक प्रतिनिधित्व में बाइट्स की धारा में परिवर्तित करना है। मल्टी-थ्रेडिंग में शब्द क्रमशः mutual exclusionthread or process synchronization के लिए है जिसका अर्थ है कि एक समय में केवल एक थ्रेड डेटा संरचना पर काम कर सकता है। सी ++ 11 एक std::mutex

#include <mutex> 
std::mutex file_io_mutex; 

{ 
    std::lock_guard<std::mutex> guard(file_io_mutex); 
    std::out << "Only one thread at a time will execute this line." << std::endl; 
} 

यह Resource Acquisition Is Initialization (RAII) का एक उदाहरण है जहां संसाधन का अधिग्रहण किया है और एक ही समय में प्रारंभ, और जारी की है जब यह क्षेत्र से बाहर चला जाता है (निष्पादन पास पहुंचता है का उपयोग करते हुए धागे के बीच क्रमबद्धता के लिए प्रदान करता धनु धनुकोष्ठक)। यह एक आम मुहावरे है, यह सुनिश्चित करता है कि ब्लॉक के अंत तक पहुंचने से पहले कोड अपवाद फेंकने पर भी म्यूटेक्स जारी किया जाता है।

+1

वाह !! यह मेरे प्रश्न को स्पष्ट रूप से उत्तर देता है .. आप महान amdn – pokche

+0

खुश हैं आपको यह उपयोगी लगता है! – amdn

7

सीरियलज वास्तव में एक धारावाहिक रूप में प्रकाशित करने का मतलब है, जैसा कि एक के बाद में होता है। तो थ्रेड सीरियलाइजेशन का अर्थ यह सुनिश्चित करना है कि घटनाओं का एक निश्चित सेट अनुक्रम में होता है, एक ही समय में

तो थ्रेड एक्सेस को क्रमबद्ध करने वाले एक ढेर का अर्थ है कि ढेर को कॉल करने के क्रम में यह किया जाएगा और वास्तव में एक ही समय में नहीं होगा। यह शायद वैश्विक लॉक के माध्यम से किया जाता है।

+0

यह। कई कंपाइलर/सीपीयू स्टालों को रोकने के लिए निर्देशों को पुन: निर्देशित करके कोड अनुकूलित करते हैं और एल 1 कैश अक्सर थ्रेड/कोर-विशिष्ट होते हैं। कई धागे से स्मृति तक क्रमबद्ध पहुंच का मतलब आम तौर पर विशिष्ट परिदृश्यों में इन अनुकूलन को छोड़ना है, जहां डेटा अखंडता को संरक्षित करने के लिए स्मृति में स्मृति का उपयोग करना महत्वपूर्ण है। –

2

उस विशिष्ट संदर्भ को जानने के बिना जिसमें आपको यह बताया गया था, मुझे लगता है कि यह एक थ्रेडेड एप्लिकेशन के विकास को संदर्भित करता है जो संदेश कतार का उपयोग कर एक बहु थ्रेडेड सिस्टम को अनुकरण करता है।

यह मुझे पुराने दिनों में वापस लाता है जब मैंने CircleMUD व्युत्पन्न खेला। पूरा गेम एक थ्रेड में लागू किया गया था, लेकिन इसे 50-100 खिलाड़ियों के साथ-साथ से निपटना पड़ा। मैं आश्चर्यचकित था कि उन्होंने इसे कैसे पूरा किया।