このコードを実行したい:アイデアは、MID
使用されていない最も低いアイテムを取得することです(mutex = 0
)。他のスレッドが読み取るのを防ぐために、この行FOR UPDATE
が使用され、UPDATE
減少しmutex
ます。
START TRANSACTION;
SELECT MID as m, sender, receiver, content FROM queue WHERE mutex = 0 ORDER BY MID ASC limit 1 FOR UPDATE;
UPDATE queue set mutex = -1 WHERE MID = m;
COMMIT;
ただし、ラインが実行さm
れたときにのみ認識されます。SELECT
クエリを中断せずに次のクエリでアクセスするにはどうすればよいTRANSACTION
ですか?
PS:ミューテックスは私が使っているものとは別のものだと知っています。