PDA

View Full Version : برنامه نویسی مالتی ترد



mehdihalla
دوشنبه 16 مهر 1397, 10:51 صبح
با سلام.بنده بین دو مفهوم Multi threading و برنامه نویسی asynchronous کمی گیج شدم.ببینید من میخوام یه برنامه بنویسم با این شرایط: (باید کدام مفهوم رو دنبالش باشم؟)
فرض کنید میخوام یه سری دیتا رو از دو پورت سریال سخت افزاری بگیرم و اونها رو ذخیره کنم در دیتابیس(برنامه به تغییر دیتا حساسه و با تغییر دیتا اون رو میخونه و ذخیره میکنه).حالا ممکنه زمانی که دارم از یک پورت دیتا رو میگیرم و برنامه مشغول گرفتن و ذخیره سازی دیتا هست ؛اون پورت دیگه دیتای جدیدی براش رسیده باشه و بخواد اونرو دریافت و ذخیره کنه؛ حالا سوالم اینه که برای اینکه این دیتای جدید رو از دست ندم چه نوع برنامه نویسی باید انجام بدم که برنامه در حالی که رو دیتای اول کار میکنه بتونه دیتای جدید رو هم دریافت و ذخیره کنه.یا به عبارت ساده تر دو تا پردازش موازی هم انجام بشه .از thread باید استفاده کنم یا async await
؟ممنونم.

ShayanFiroozi
سه شنبه 17 مهر 1397, 11:01 صبح
سلام ،

Thread یک موضوع سطح پایینه ، کار باهاش تقریبا خطرناک یا اصطلاحا unsafe هستش ، مگر اینکه کاملا اصولی باهاش کار کنین.

بهتره از Task استفاده کنین.





new Task()(=>
{

//Your Job

}).Start();



البته مسائل corss-thread رو رعایت کنین

farhad_shiri_ex
سه شنبه 17 مهر 1397, 12:19 عصر
با سلام.بنده بین دو مفهوم Multi threading و برنامه نویسی asynchronous کمی گیج شدم.ببینید من میخوام یه برنامه بنویسم با این شرایط: (باید کدام مفهوم رو دنبالش باشم؟)
فرض کنید میخوام یه سری دیتا رو از دو پورت سریال سخت افزاری بگیرم و اونها رو ذخیره کنم در دیتابیس(برنامه به تغییر دیتا حساسه و با تغییر دیتا اون رو میخونه و ذخیره میکنه).حالا ممکنه زمانی که دارم از یک پورت دیتا رو میگیرم و برنامه مشغول گرفتن و ذخیره سازی دیتا هست ؛اون پورت دیگه دیتای جدیدی براش رسیده باشه و بخواد اونرو دریافت و ذخیره کنه؛ حالا سوالم اینه که برای اینکه این دیتای جدید رو از دست ندم چه نوع برنامه نویسی باید انجام بدم که برنامه در حالی که رو دیتای اول کار میکنه بتونه دیتای جدید رو هم دریافت و ذخیره کنه.یا به عبارت ساده تر دو تا پردازش موازی هم انجام بشه .از thread باید استفاده کنم یا async await
؟ممنونم.

می تونید از کتابخانه TPL/PLinq برای موازی کردن پردزاش هاتون استفاده کنید البته استفاده ازنخ ها سطح کاربری و قفلهای اطلاعات اشتراکی در لایه هسته سیستم عامل مثل mutex هم می تونید برنامه های موازی بنویسید.