MySQLで、スレッドが排他的にテーブルを操作する方法がねえかと考えた。 updateなりdeleteなりなら行ロックでも別にいいのだが、テーブルに対するinsertもロックする方法がわからん。 LOCK TABLES構文というのを見つけて「名前的にこれやろ」と思ったが全然違って、しかも運用中のサービスに安易にコードを付け加えテストもせずにリリースしてしまったおかげで、4人しか入れない部屋に10人ぐらい参加してゲームが始まらないという恐怖の状態に陥ってしまった。当たり前である。(LOCK TABLES は、現在のスレッドに対してベース テーブル (ビュー以外) をロックします) 最初は、LOCK TABLESが「現在のスレッドに対しロック」して、「もしテーブルが1つでも他のスレッドによってロックされていたら、それは全てのロックを入手するまでブロック」するというのなら、必要なデータの読み書き