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

نام تاپیک: نحوه ایجاد هماهنگی ترد ها در برنامه نویسی چند خطی

  1. #1

    نحوه ایجاد هماهنگی ترد ها در برنامه نویسی چند خطی

    چگونه میتوان رویداد رخ داده در ترد اصلی را به ترد دیگر به صورت thread safe گزارش کرد
    چگونه میتوان با استفاده از event و ست کردن آن در ترد اصلی و پس از آن چک کردن این ایونت در ترد دیگر و اجرای عملیات و پس از پایان عملیات ریست کردن آن در ترد فرعی و از این طریق اعلام پایان عملیات به ترد اصلی عمل کرد.
    موقع ساخت ترد دیگر چگونه میتوان ایونت را به ترد دیگر ارسال کرد:
    Net_thread_1:= TNetThread.Create(user_name, password, TheCallback, T_st_event)
    روشی برای اجرای interrupt برای اجرای این عمل وجود دارد.

  2. #2

    نقل قول: نحوه ایجاد هماهنگی ترد ها در برنامه نویسی چند خطی

    سلام
    روشهای مختلفی برای ارتباط بین تردها وجود داره، برای ارتباط بین یک ترد فرعی و ترد اصلی می تونید به وسیله ارسال Message به یک فرم، با ترد اصلی ارتباط برقرار کنید، در اینصورت در بدنه کلاس فرم باید یک Message-Handler برای دریافت پیام موردنظر تعریف کنید
    اگر قصد دارید بین دو ترد فرعی ارتباط برقرار کنید، یکی از روشهای مناسب استفاده از Event هستش، روش کار به اینصورته که شما یک Event به صورت Global تعریف می کنید، با فرض اینکه ترد 1 باید ترد 2 رو باخبر کنه، در ترد 1 هر زمان که نیاز بود Event رو Set می کنید، در ترد دو در ابتدای یک حلقه While ( مثلا While not Terminated do ) با دستور MyEvent.WaitFor منتظر Set شدن Event می مونید، هر زمان که ترد اول Event رو Set کنه، دستور WaitFor مقدارش رو برمی گردونه و با چک کردن مقدار برگشتی در خط بعدی حلقه می تونید عملیات موردنظر رو اجرا کنید، توجه کنید که خروجی WaitFor امکان داره به خاطر خطا یا TimeOut هم باشه، پس باید مقدار برگشتی رو چک کنید، این فرآیند می تونه در یک چرخه بین دو ترد ادامه داشته باشه ( یعنی هر دو ترد در یک حلقه While منتظر همدیگه بمونن )، در اینصورت بعد از اجرای متد در ترد 2 ، Event رو Reset کنید
    نمونه های موجود رو ببینید، خودتون شروع کنید به نوشتن و هر جایی مشکل داشتید نمونه دستورات رو قرار بدید تا بررسی بشه
    موقع ساخت ترد دیگر چگونه میتوان ایونت را به ترد دیگر ارسال کرد
    نیازی به ارسال Event نیست، Event رو به صورت Global تعریف کنید، اگر ترد در یونیت دیگه ای هستش و میخواید Event رو برای ترد بفرستید باید یک فیلد مثلا در Private مربوط به کلاس ترد تعریف کنید و در Constructor مربوط به ترد متغیر از نوع Event رو به عنوان ورودی بدید و در بدنه Constructor هم اون فیلد کلاس رو برابر پارامتر ورودی قرار بدید، از اونجایی که متغیرهای از نوع کلاس در دلفی اشاره گر هستند، آدرس Event در فیلد Private کلاس ترد قرار می گیره و در بدنه Execute می تونید ازش استفاده کنید

  3. #3

    نقل قول: نحوه ایجاد هماهنگی ترد ها در برنامه نویسی چند خطی

    سلام
    با تشکر از
    Mahmood_M بابت پاسخگویی. event را public تعریف کردم و مشکل حل شد.


تاپیک های مشابه

  1. پاسخ: 0
    آخرین پست: یک شنبه 13 تیر 1395, 13:59 عصر
  2. مقاله: کاربرد String Buffer در برنامه نویسی جاوا( و یا حتی برنامه نویسی اندروید
    نوشته شده توسط arya-m در بخش برنامه نویسی موبایل
    پاسخ: 2
    آخرین پست: جمعه 18 مهر 1393, 17:22 عصر
  3. برنامه نویسی ویروس به روش غیر رو نویسی
    نوشته شده توسط mazimazi در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 4
    آخرین پست: شنبه 25 آذر 1391, 10:37 صبح
  4. آموزش: مجموعه آموزشهای 3d buzz بعضی از زبان های برنامه نویسی و اسکریپت نویسی
    نوشته شده توسط REZAsys در بخش طراحی و ساخت بازی‌های کامپیوتری
    پاسخ: 0
    آخرین پست: سه شنبه 21 دی 1389, 12:02 عصر
  5. پاسخ: 3
    آخرین پست: پنج شنبه 14 آبان 1388, 10:11 صبح

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

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