بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
تغییر متغیر داخل Thread و احتمال کرش
با سلام مجدد خدمت استاد عزیز
سوالی که در مورد تردها برای من پیش اومده:
با توجه به اینکه نباید از ترد ui یا هر جای دیگری که ترد worker رو تولید و استارت کرده استوپش کرد ، یک راه استفاده از فلگیه که توست پدر ست بشه و تردمون اونو چک کنه.
سوالی که برام ایجاد شده مشکل دسترسی به منابع برای این متغیر پیش نمیاد ؟
باید از سمافور و.. استفاده بشه؟
با تشکر.
سوالی که در مورد تردها برای من پیش اومده:
با توجه به اینکه نباید از ترد ui یا هر جای دیگری که ترد worker رو تولید و استارت کرده استوپش کرد ، یک راه استفاده از فلگیه که توست پدر ست بشه و تردمون اونو چک کنه.
سوالی که برام ایجاد شده مشکل دسترسی به منابع برای این متغیر پیش نمیاد ؟
باید از سمافور و.. استفاده بشه؟
با تشکر.
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
uncocoder
12 سال پیش
+1
0
در شرایط بسیار ساده، ایجاد یک subclass از Thread است که داخل اون متغیری مثلاً به نام mustStop وجود داره و داخل متد run چک میشه. در اینصورت کالاً safe هست.
استفاده از سمافور و ... در جاهای بسیار پیچیده تر کاربرد داره که معمولاً در پروژه ها پیش نمیاد مگر پروژه های بسیار پیچیده و پر پردازش.
استفاده از سمافور و ... در جاهای بسیار پیچیده تر کاربرد داره که معمولاً در پروژه ها پیش نمیاد مگر پروژه های بسیار پیچیده و پر پردازش.
با تشکر از جوابتون،
من یه چیزی هنوز برام گنگه و اونم اینکه همین متغیر کلاس اگر در زمانی که داره توسط ترد UI آپدیت میشه ، توسط متد run ترد worker چک بشه ، و یا بر عکس در زمانی که متد run در حال چک کردنشه ، ترد UI بخواد تغییرش بده مشکلی پیش نمیاد؟ به عبارتی دسترسی همزمان به یک منبع در این حالت خود به خود مدیریت شده یا خیر. (12 سال پیش)
آفرین به شما، مشخص هست که معنی همزمانی رو به خوبی می دونید. خواندن و نوشته شدن همزمان برای متغیر های از نوع primitive مثل boolean، از آنجاییکه اصطلاحاً بصورت atomic انجام میشه، مشکلی ایجاد نمی کنه. اما مثلاً خواندن عناصر یک آرایه و پردازش اونها، و در thread دیگری تغییر آرایه، تأثیرات بسیار مخربی داره چون اصلاً بصورت atomic انجام نمیشه. منظور از atomic این هست که در سیکل کوتاه و یکباره تغییر اعمال میشه و امکان تداخل با اعمال دیگری وجود نداره. پس در این خصوص جای نگرانی نیست. (12 سال پیش)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .