この方法で「キャンセルのような」動作を実装できます:
別のスレッドでクエリを実行すると、タイムアウトが発生するかどうかに関係なく実行が継続されます。タイムアウトはメインスレッドで発生し、変数を「1」に設定して発生したことを示します。次に、メインスレッドでやりたいことを何でもします。
クエリスレッドは、クエリが完了すると、タイムアウトが発生したかどうかを確認します。そうでない場合は、必要な残りの作業を実行します。持っている場合は、ロックしたばかりのテーブルのロックを解除するだけです。
少し無駄に聞こえるかもしれませんが、ロックとロック解除の期間は基本的に瞬時であり、可能な限り目的の結果に近づく必要があります。