PDA

View Full Version : سوال: ذخیره در یک فایل با استفاده از دو thread



morteza.m
جمعه 17 مهر 1394, 18:40 عصر
سلام دوستان.
میخوام برای بالا بردن سرعت، با استفاده از دو thread، اطلاعات رو روی یک فایل ذخیره کنم. ولی خطا میگیره و میگه باید thread safe باشه!!!
از جستجو تو اینترنت هم چیزی دستگیرم نشد!!
ممنون میشم کمک کنید.

aliasghar2
جمعه 17 مهر 1394, 19:59 عصر
سلام این مقاله رو پیدا کردم به نظرم جواب یده

http://www.johandorper.com/log/thread-safe-file-writing-csharp

morteza.m
شنبه 18 مهر 1394, 00:01 صبح
سلام علی آقا. ممنون از لطفت.
ولی کدی که در این مقاله نوشته، عملیات نوشتن رو فقط به یک thread اختصاص میده.
من میخوام هر دو thread بتونن روی فایل اطلاعات بریزن.
کمک بیشتر پلیز :)

SabaSabouhi
شنبه 18 مهر 1394, 09:54 صبح
سلام علی آقا. ممنون از لطفت.
ولی کدی که در این مقاله نوشته، عملیات نوشتن رو فقط به یک thread اختصاص میده.
من میخوام هر دو thread بتونن روی فایل اطلاعات بریزن.
کمک بیشتر پلیز :)

سلام
فقط یک متد برای نوشتن تو فایل داشته باش، تو thread دوم هر وقت خواستی تو دیتابیس بنویسی از همون متد اولی استفاده کن.

صبا صبوحی

morteza.m
شنبه 18 مهر 1394, 22:28 عصر
سلام صبا خانوم
ممنون از لطفتون.
همین کارو کردم ولی باز هم مثل دفعه قبل خطا میده. خطاش اینه:


Probable I/O race condition detected while copying memory. The I/O package is not thread safe by default. In multithreaded applications, a stream must be accessed in a thread-safe way, such as a thread-safe wrapper returned by TextReader's or TextWriter's Synchronized methods. This also applies to classes like StreamWriter and StreamReader.

plus
شنبه 18 مهر 1394, 22:58 عصر
شما نمیتونید با چند تا Thread در یک فایل بنویسید. سرعت نوشتن در فایل تابعی از سرعت دستگاه ذخیره سازی (دیسک، فلش یا ...) هست و شما نیمتونید با این روشها تغییری در این سرعت ایجاد کنید.
البته اگه تولید داده های شما کند هست برای تولید داده ها میتونید از چند Thread استفاده کنید ولی برای ذخیره سازی نه.

morteza.m
یک شنبه 19 مهر 1394, 16:17 عصر
ممنون آقا / خانوم plus
راستش با یک thread دارم دیتا دریافت می کنم و با یک thread دیگه ذخیره میکنم. وقت ذخیره کردن برنامه lost داره. گفتم شاید بتونم اینجوری حلش کنم.