نمایش نتایج 1 تا 7 از 7

نام تاپیک: كنترل ورودي - خروجي همزمان

  1. #1

    كنترل ورودي - خروجي همزمان

    سلام

    من يه برنامه اي دارم مينويسم كه يك سري ورودي به آن ارسال ميشود و پس از يك سري عمليات خروجي توليد ميشه. اما سرعت توليد ورودي و خروجي ممكنه متفاوت باشه. براي همين ميخواهم اين دو تا كار به عنوان دو تا كار مستقل از هم باشند و اجرا بشوند.

    مثال ساده شده اين كار (فايل ضميمه) اينه كه يه edit box داريم كه توسط كاربر اطلاعات داخلش تايپ ميشه و با زدن دكمه add اطلاعات به ليست باكس1 وارد ميشه. به محض ورود يك موجوديت به ليست 1 پردازش انجام ميشه و پس از انجام پردازش كه اينجا اون را با يك وقفه 5 ثانيه اي جايگزين كردم اطلاعات به ليست 2 منتقل ميشه و در صورت وجود اطلاعاتي در ليست 1 دوباره اين عمل تكرار ميشه.
    من در اين مثال از يك تايمر استفاده كردم كه وجود اطلاعات را در ليست 1 چك بكنه. اما در اين بين ديگه كاربر نميتونه به كارش (ورود اطلاعات) ادامه بده (سرعت پايين پاسخگويي برنامه به تايپ و ...)
    من بيشتر بانك اطلاعاتي كار كردم و چيزي درباره مولتي تردينگ نميدونم و فكر ميكنم كه راه حل اين مشكل استفاده از تردها باشه اما روش كار را باهاش بلد نيستم.

    يه مقاله در سايت پيدا كردم كه مال آقاي مهري بود اما نتونستم چيزي ازش بفهم. كسي ميتونه من را راهنمايي كنه!؟
    فایل های ضمیمه فایل های ضمیمه

  2. #2

    نقل قول: كنترل ورودي - خروجي همزمان

    واژه Thread - Threading رو توی سایت سرچ کن مطلب زیاده

    http://www.barnamenevis.org/sh...ad.php?t=79463

    یه سری هم به این تاپیک بزن
    موفق باشی

  3. #3

    نقل قول: كنترل ورودي - خروجي همزمان

    نقل قول نوشته شده توسط smakhavan مشاهده تاپیک
    يه مقاله در سايت پيدا كردم كه مال آقاي مهري بود
    نقل قول نوشته شده توسط mossaferin مشاهده تاپیک
    واژه Thread - Threading رو توی سایت سرچ کن مطلب زیاده
    http://www.barnamenevis.org/sh...ad.php?t=79463
    یه سری هم به این تاپیک بزن
    موفق باشی

    گفتم كه سرچ كردم. اين را هم كه شما فرموديد ديده بودم اما نميتونم كارم را راه بيندازم. نميتونم ارتباط اينها را با اون چيزي كه من ميخوام پيدا كنم! مشكل از منه كه چيز زيادي در اين باره بلد نيستم

  4. #4

    Smile نقل قول: كنترل ورودي - خروجي همزمان

    سلام

    این هم چند تا مثال از ترد که میتونی مطالعه کنی تا با روش ها آشنا بشی و در نهایت کار خودتو پیاده سازی کنی

    موفق باشی
    فایل های ضمیمه فایل های ضمیمه

  5. #5

    نقل قول: كنترل ورودي - خروجي همزمان

    نميتونم ارتباط اينها را با اون چيزي كه من ميخوام پيدا كنم!
    یک Thread اصلی دارید که رابط گرافیکی کاربر را کنترل میکنه.
    یک Thread خودتون درست می کنید که به یک لیست دسترسی داره. رابط کاربر هر بار در این لیست داده ایی قرار میده، و این Thread را با خبر میکنه. این Thread هم بعد از دریافت پیام، میره سراغ لیست، و داده های موجود در آن را یکی یکی پردازش میکنه. هر زمان کارش روی یکی از داده ها تمام شد، به Thread سوم اطلاع میده.
    3- Thread سوم با پیام Thread دوم فعال میشه، لیست خودش را چک میکنه، و اگر داده جدیدی در آن بود، آن را پردازش میکنه.

    هر کدام از Thread های دوم و سوم ممکن هست در صورت نیاز پیام هایی را به Thread اول، که مسئولیت رابط کاربر را برعهده دارد، ارسال کنند؛ مثلا برای با خبر کردن Thread اول از پیشرفت کار.

    مشكل از منه كه چيز زيادي در اين باره بلد نيستم
    باید تحقیق کنید. موضوعاتی که برای انجام این کار باید روی آنها تحقیق کنید:
    1- مفهوم Thread و مباحث عمومی مربوط به Multi-threading.
    2- تکنیک های مختلف همزمان سازی Thread ها؛ Thread Synchronization
    3- بررسی مدل های متداول Threading در نرم افزار، مثل Pipeline Model یا Producer-Consumer Model.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  6. #6

    نقل قول: كنترل ورودي - خروجي همزمان

    خيلي ممنون.
    حالا كه بيشتر رفتم تو دل كار ديدم كه خيلي هم كار سختي نبود. فقط مشكل از اينجا بود كه من از اسم ترد واهمه داشتم و باهاش تاحالا كار نكرده بودم!! راست گفتن كه الناس اعداء ما جهلوا

  7. #7

    نقل قول: كنترل ورودي - خروجي همزمان

    فقط مشكل از اينجا بود كه من از اسم ترد واهمه داشتم
    Thread سختی خودش را در دو مقطع به وضوح نشون میده:
    1- زمانی که باید Concurrent فکر کنید؛ یعنی باید دیدگاه سنتی خودتون درباره اجرای برنامه را تغییر بدید، و عادت کنید به اینکه کدهایی بطور موازی با هم در حال اجرا هستند.

    2- زمانی که می خواید پروژه را Debug کنید؛ اون زمان که مثلا Threadها دچار Deadlock میشند، یا خطاهای عجیب و غریبی دریافت می کنید که نمی دونید از کدوم Thread بوده.

    بطور کلی، نوشتن یک برنامه Multi-threaded خوب یک کار ساده محسوب نمیشه. این رو نگفتم که بترسید، بلکه گفتم که تصور نکنید کار با Threadها خیلی آسون هست.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •