実行するタスクの MySQL テーブルがあり、各行には単一のタスクのパラメーターがあります。
ループ内でタスクを実行する多くのワーカー アプリ (異なるマシン上にある可能性があります) があります。
アプリは、MySQL のネイティブ C API を使用してデータベースにアクセスします。
タスクを所有するために、アプリは次のようなことを行います。
グローバルに一意の ID を生成します (簡単にするために、数字であるとしましょう)
UPDATE tasks
SET guid = %d
WHERE guid = 0 LIMIT 1
SELECT params
FROM tasks
WHERE guid = %d
最後のクエリが行を返す場合、それを所有し、実行するパラメーターがあります
サーバーへの単一の呼び出しで同じ効果 (つまり、行を「所有」してそのパラメーターを取得する) を達成する方法はありますか?