आप इस तरह "रद्द करने जैसा" व्यवहार लागू कर सकते हैं:
आप क्वेरी को एक अलग थ्रेड पर निष्पादित करते हैं, जो चलता रहता है कि टाइमआउट होता है या नहीं। टाइमआउट मुख्य थ्रेड पर होता है, और एक वेरिएबल को "1" पर सेट करता है जो यह दर्शाता है कि यह हुआ। फिर आप अपने मुख्य धागे पर जो कुछ भी करना चाहते हैं वह करें।
क्वेरी थ्रेड, एक बार क्वेरी पूरी होने के बाद, जांचता है कि क्या टाइमआउट हुआ है। यदि ऐसा नहीं होता है, तो यह बाकी काम करता है जो इसे करने की जरूरत है। यदि यह है, तो यह केवल उन तालिकाओं को अनलॉक करता है जिन्हें अभी लॉक किया गया है।
मुझे पता है कि यह थोड़ा बेकार लगता है, लेकिन लॉक-अनलॉक अवधि मूल रूप से तात्कालिक होनी चाहिए, और आप जितना संभव हो उतना परिणाम प्राप्त कर सकते हैं।