PDA

View Full Version : سوال: آیا ارجاع به کد مشترک در ترد ها سبب نوبتی ران شدن کد برای هر ترد می شود؟



یوسف زالی
جمعه 23 دی 1390, 03:40 صبح
با سلام.
سوالی که برام پیش اومده اینه که اگر در برنامه مولتی ترد متغیری از نوع تابع داشته باشیم، و به اونها مقداری ست کنیم، با اجرا شدن همزمان ترد ها وقتی به اجرای تابع مورد نظر برسیم ترد ها منتظر تردی می مونن که تابع دستشه یا اینکه برای هر کدوم جدا کدی اسمبل می شه و اون اجرا می شه؟
اگر این متغیر به تابعی درون ساز برای هر ترد تبدیل بشه چی می شه؟
ممنون از دوستان.

Mahmood_M
شنبه 24 دی 1390, 15:06 عصر
برای یک Thread در هنگام استفاده از تابع چیزی که اهمیت داره متغیرهای درون تابع هستند که مقدارشون در هنگام استفاده دو Thread تداخل نداشته باشه ، اما هر Thread یک Stack جدا در اختیار داره و متغیرهای محلی تابع رو در درون اون قرار میده ، پس مشکلی از این جهت برای Thread ها به وجود نمی یاد ، تابع برای هر متغیری که برابر اون قرار داده شده به صورت جدا اسمبل میشه مگر اینکه در زمان اجرا شما متغیری از نوع اشاره گر رو به فضای آدرس یک تابع ارجاع بدید که در این صورت Thread شما باید اجازه ی استفاده از اون فضا رو داشته باشه ، نکته ی مهم اینه که محدوده ی فضای حافظه ی Process بین همه Thread ها به اشتراک گذاشته شده و همه ی Thread ها به اون دسترسی دارند
نمی دونم سئوالتون رو درست متوجه شدم یا نه ، با دیدن یک نمونه کد بهتر میشه نظر داد

موفق باشید ...

یوسف زالی
شنبه 24 دی 1390, 15:36 عصر
سلام خدمت استاد.
آقا محمود اینجا (http://barnamenevis.org/showthread.php?322931-برنامه-تولید-اعداد-خاص-با-استفاده-از-مولتی-ترد) رو ببین.
نمونه برنامه برای هر ترد از آدرس به یک تابع استفاده کرده.
در این مثال آیا هر ترد معطل آزاد کردن تابع می مونه یا نه؟
ممنون از جواب.

یوسف زالی
یک شنبه 25 دی 1390, 22:09 عصر
آقا محمود ما منتظریم..