ورود

View Full Version : سوال: نحوه بلوکه کردن نخ



سعیدسعید
جمعه 08 مرداد 1389, 11:46 صبح
با سلام خدمت همه دوستان محترم
فرض کنید یک نخ داریم که این نخ در داخل کد خود از یک لیست پیوندی داده ای را حذف میکند
حال اگر لیست دارای عنصر باشد کد به راحتی اجرا می شود اما اگر لیست دارای داده نباشد در این حالت می خواهیم این نخ بلوکه شود.
بعد از اینکه بلوکه شد هر موقع که لیست دارای داده باشد کد از همان جایی که مانده به کار خود ادامه دهد
مثلا شما دستور scanf در زبان c را در نظر بگیرید. اگر ما چند تا scanf پشت سر هم بنویسیم برنامه به اولین scanf که رسید منتظر ورودی می ماند بعد از دریافت اولین ورودی برنامه منتظر دومین ورودی و الی اخر است.

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

از شما دوستان محترم خواهش میکنم در صورت داشتن راه حل بنده رو هم راهنمایی بفرمایید

ممنون: سعید

cups_of_java
جمعه 08 مرداد 1389, 21:20 عصر
یکی از راه حل ها استفاده از wait/notify و یا sleep هست. شما با این امکان می تونید یک نخ رو در حالت انتظار نگه دارید و هر وقت اندازه لیست بیشتر از صفر شد دوباره نخ رو فعال کنید. برای اینکار جاواداک کلاس Thread رو بخونید. مقاله های زیادی هم در مورد استفاده درست از نخ ها و چگونکی همگام سازی اون ها (Thread Synchronization) هست. کد هایی که با نخ ها و این مسائل سروکار دارن باید با دقت نوشته بشن تا درست کار کنند.
http://www.jchq.net/certkey/0702certkey.htm

سعیدسعید
شنبه 09 مرداد 1389, 10:15 صبح
از راهنماییتون خیلی خیلی ممنونم