با استفاده از تابع GET_LOCK در MySQL، یک مثال بنویسید که قفل با نام 'my_app_lock' را با تایماوت 10 ثانیه درخواست کند و سپس در صورت موفقیت عملیات آزادسازی قفل را انجام دهد.
5.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:51 0.0
برای حل این سوال از توابع سیستمی GET_LOCK و RELEASE_LOCK استفاده کنید: با SELECT GET_LOCK('my_app_lock', 10) قفل را درخواست کنید و مقدار بازگشتی (1=موفق، 0=تایماوت، NULL=خطا) را بررسی کنید؛ در صورت موفقیت با SELECT RELEASE_LOCK('my_app_lock') قفل را آزاد کنید. نکات: قفلهای نامدار به اتصال (connection) وابستهاند و با بسته شدن اتصال خودکار آزاد میشوند، بنابراین همیشه مقدار بازگشتی را چک کرده و قفل را سریع آزاد کنید تا از بنبست و مشکلات همزمانی جلوگیری شود.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
قفلهای نامدار به هر اتصال تعلق دارند و با بسته شدن آن اتصال آزاد میشوند. همیشه مقدار بازگشتی GET_LOCK(..., 10) را بررسی کنید و در صورت موفقیت با RELEASE_LOCK قفل را آزاد کنید تا از بنبست جلوگیری شود. اگر GET_LOCK برابر NULL یا 0 برگردد، نباید عملیات حساس به قفل انجام شود و مسیر جایگزین یا بازبینی ورود به بخش بحرانی را در نظر بگیرید.
گزارش