मैं जानता हूँ कि वर्तमान C++
में धागे की धारणा नहीं है कि वहाँ है, लेकिन this article is saying:सी ++ थ्रेड-सुरक्षित (cout, cerr, clog) में मानक आउटपुट स्ट्रीम हैं?
एक typesafe, threadsafe, पोर्टेबल प्रवेश तंत्र
.....
fprintf()
फ़ंक्शन थ्रेडसेफ है, इसलिए यदि यह लॉग विभिन्न धागे से उपयोग किया जाता है, तो आउटपुट लाइन स्कैम्बल नहीं किया जाएगा।
क्या cout
, cerr
और clog
के बारे में?
मुझे लगता है कि यह प्रश्न C++ में सभी प्रकार के स्ट्रीम प्रकारों पर लागू होता है, जैसे fstream
और stringstream
।
[नोट: उत्तर अब "हाँ" है, सी ++ 11 में) (http://stackoverflow.com/a/6374525/87234)। – GManNickG
@GManNickG: मैं विजुअल स्टूडियो 2013 सी ++ का उपयोग करता हूं और अभी भी थ्रेड सुरक्षित नहीं है। स्क्रीन पर आउटपुट ज्यादातर दूषित/intermixed हैं। –
@MehmetFide: थ्रेड-सुरक्षा सिंक्रनाइज़ेशन (मिश्रित/interleaved तार) से अलग है; सी ++ 11 मानक गारेंटेस कि कार्यान्वयन विभिन्न वस्तुओं से इन वस्तुओं का उपयोग करने पर डेटा दौड़ का कारण नहीं बनता है, जबकि यह सुनिश्चित करने के लिए कि एकाधिक 'ऑपरेटर <<' कॉल सिंक्रनाइज़ हैं। – legends2k