ورود

View Full Version : حرفه ای: فراخوانی هم زمان یک متد در یک برنامه



ostovarit
چهارشنبه 18 اسفند 1389, 15:54 عصر
با سلام dll به زبان C++ دارم که به برنامه ای داده میشه ... این برنامه متد داخل dll را در یک زمان فراخوانی میکنه ... اگر این متد فقط یک بار صدا زده بشه دستگاه متصل به برنامه کار خود را کامل و درست انجام میدهد ...
اما در فراخوانی همزمان متد کار با ارور مواجه شده و ناتمام می ماند ...
برای فراخوانی همزمان یک متد چه نکته ای باید رعایت شود ... و دلیل اینکه تداخل پیش میاد چیه؟ و چطور حل میشه؟

با تشکر

sh4mid
چهارشنبه 18 اسفند 1389, 22:00 عصر
سلام
منظورت از
فراخوانی همزمان یک متد چیه؟ :متفکر: برنامه ات Multi thread هست؟
اگر درست فهمیده باشم و اینجور باشه که thread های مختلف همزمان بخواهند از اون dll استفاده کنند میتونی از Critical Section Objects (http://msdn.microsoft.com/en-us/library/ms682530(v=vs.85).aspx) استفاده کنی یا Mutex Objects (http://msdn.microsoft.com/en-us/library/ms684266(v=vs.85).aspx)

ostovarit
چهارشنبه 18 اسفند 1389, 22:08 عصر
سلام
منظورت از چیه؟ :متفکر: برنامه ات Multi thread هست؟
اگر درست فهمیده باشم و اینجور باشه که thread های مختلف همزمان بخواهند از اون dll استفاده کنند میتونی از Critical Section Objects (http://msdn.microsoft.com/en-us/library/ms682530%28v=vs.85%29.aspx) استفاده کنی یا Mutex Objects (http://msdn.microsoft.com/en-us/library/ms684266%28v=vs.85%29.aspx)

از شرکتت در بحث ممنونم لینکی که دادی رو مطالعه می کنم ...
یک مثال میزنم که بهتر مطلب رو برسونم ...
من یک متد دارم که داده رو از برنامه میگیره پردازش میکنه و روی یک چیپ ذخیره میکنه ...
وقتی که یک چیپ دارم، مشکی وجود نداره، داده ها پردازش میشه و حاصل روی چیپ ذخیره میشه ...
اما اگر مثلا 2 تا دستگاه که چیپ داخلش هست رو به کامپوتر وصل کنم و از طریق نرم افزار متد رو برای ذخیره اطلاعات روی هر دو چیپ هم زمان فراخونی کنم این دو فراخونی با هم تداخل ایجاد میکنه و معمولا یا کل کار انجام نمیشه یا یکیش ارور میده و دیگری اوکی میشه ...

کاری که هنوز امتحان نکردم و میخوام تستش کنم اینه که برای هر فراخونی متد یک هندلی توسط ویندوز تولید میشه ... اون هندل رو نگه دارم و متد ها رو براش فراخونی کنم ... بعدش هم زمان هندل جدیدی ایجاد کنم و هر دو هندل رو تا پایان عملیات پیش ببرم...

باز دوستان نظری دارن ممنون میشم بنویسن ...