مساله خوانندگان و نویسندگان در زبان #c

the_king

مدیرکل انجمن
یکی از مسائل متعارف در بحث دسترسی به منابع در برنامه های چند نخی (Multi-Thread) مساله خوانندگان و
نویسندگان است که با زبان #C ایجاد شده است :

Preview.gif


در برنامه قابلیت تنظیم سرعت فعالیت نویسنده و خواننده بصورت مجزا پیش بینی شده است.

کد برنامه در دو ویرایش Visual Studio 2005 و Visual Studio 2008 ضمیمه این پست می باشد.
 

پیوست ها

  • CSharpReaderWriter 2008.zip
    65.5 کیلوبایت · بازدیدها: 395
  • CSharpReaderWriter 2005.zip
    55.2 کیلوبایت · بازدیدها: 154

evil.sitco42

New Member
دوست عزیز امکانش هست که ی ک توضیح مختصر هم در این باره بدین ک برنامه چگونه کار میکنه؟
ممنون میشم
 

the_king

مدیرکل انجمن
دوست عزیز امکانش هست که ی ک توضیح مختصر هم در این باره بدین ک برنامه چگونه کار میکنه؟
ممنون میشم
ما یک نویسنده و یک خواننده داریم که با یک لیست کار می کنند. نویسنده کارش اینه که آیتم هایی رو به یک لیست اضافه کنه.
یک خواننده هم داریم که کارش خواندن و برداشتن آیتم هایی است که نویسنده ایجاد کرده.
سرعت نویسنده و خواننده الزاما یکی نیست، پس ممکنه نویسنده سریعتر از خواننده آیتم ایجاد کنه و تعداد آیتم های خوانده نشده مدام بیشتر بشه،
و یا برعکس سرعت خواننده بیشتر باشه و بیشتر وقت اش رو بیکار منتظر بمونه تا آیتمی در لیست خالی قرار بگیره.

این برنامه سه تا نخ (Thread) داره، نخ اول همون ای است که این فرم برنامه رو نشون میده و یا سرعت خواننده و نویسنده رو تنظیم می کنه.
یکی از وظایف این نخ اول اینه که نشون بده چه آیتم هایی در لیست قرار داره.
این نخ، نخ اصلی برنامه است و سایر برنامه ها هم همیشه این یک نخ اصلی رو دارند.
دو نخ دیگه خواننده و نویسنده هستند و توسط همین نخ اصلی ایجاد می شوند. خواننده و نویسنده مستقل از هم عمل می کنند.
برای نخ نویسنده روال اینه که با هر بار اجرای روتین اش، آیتم جدیدی در لیست قرار بگیره.
برای نخ خواننده هم روال اینه که با هر بار اجرای روتین اش، چک کنه که آیا لیست خالی هست یا خیر، اگر خالی نبود، یک آیتم از داخل لیست
برداره.
 

جدیدترین ارسال ها

بالا