PDA

View Full Version : thread و همزمانی



smt1383
سه شنبه 13 بهمن 1388, 09:00 صبح
با سلام
تا آنجا که من فهمیدم در استفاده از threadها زمانی که دو یا چند thread از یک منبع مشترک استفاده کنند نیاز به همزمانی است تا دو یا چند thread به طور همزمان از یک منبع مشترک استفاده نکنند. حال سؤال من اینست :
در برنامه من در یک thread (وقفه دریافت پورت سریال) اطلاعات را از پورت سریال می خواند و در یک list ذخیره می کند (در انتهای لیست) و در thread اصلی در رویداد tick یک تایمر به صورت متناوب از اول list اطلاعات را می خواند و آنها را پردازش می کند. حال با توجه به اینکه در یکی از thread ها در list می نویسیم و در thread دیگر فقط از لیست می خوانیم، آیا باز هم نیاز به همزمانی است؟
با تشکر

smt1383
سه شنبه 13 بهمن 1388, 13:45 عصر
در ضمن در داخل thread، بعد از خواندن از ابتدای List ، عنصر اول لیست را هم حذف می کنیم. آیا نیاز به همزمان سازی است؟ ممنون می شوم دوستان راهنمایی کنند.

FastCode
سه شنبه 13 بهمن 1388, 15:14 عصر
برای این مواقع پیشنهاد میشه که از یه لیست حلقوی(اگر اسمش رو درست گفته باشم.:خجالت:) استفاده کنید.
مواد لازم برای تهیه ی لیست:
یک _2 متغیر byte به نام های readposition و writeposition
دو _ یک array به طول 255 : object[] list
سه_

pblic void add(object item)
{
list[writeposition++]=item;//this is an atomic operation
}
pblic object get()
{
if(readposition==writeposition) throw new Exception();
return list[readposition++];//this is an atomic operation
}
pblic void get_NoRemove()
{
if(readposition==writeposition) throw new Exception();
return list[readposition];//this is an atomic operation
}