thread safe بودن cout - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

thread safe بودن cout

+2 امتیاز
سلام.

من اینقدر در مورد thread safe بودن cout نوشته ها ضد و نقیض خوندم به نتیجه خاصی نرسیدم دوستان نظر شما چیه هست یا نه؟
سوال شده مهر 3, 1393  بوسیله ی Xavi (امتیاز 627)   24 83 110

1 پاسخ

+4 امتیاز
 
بهترین پاسخ

در c++11  

thread safe cout هست   یعنی مثلا اگر همزمان 2 تا thread داخل شی cout بنویسین buffer مربوطه خراب نمیشه و data race نداریم .

و این که اگر همزمان از cerr , cout ,clog داخل thread های مختلف استفاده کنید این 3 تا به درستی با هم sync هم میشن.

ولی زمان نشان دادن خروجی ممکنه خروجی تفاوت داشته باشه و اون چیزی که انتظار داریم نباشه.

مثلا 

cout<<"a b"; //from thread 1
cout<<"d f"; // from thread 2

خروجی که نشان داده میشه میتونه a b d f باشه میتونه a d b f باشه و یا هر ترکیب دیگه ای .برای جلوگیری از این مشکل باید از mutex استفاده کنین .

پاسخ داده شده مهر 3, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد مهر 4, 1393 بوسیله ی Xavi
...