【オセロ,将棋】ボードゲーム Part3【囲碁,War】 (636レス)
上
下
前
次
1-
新
528
:
310
2021/05/14(金)00:24
ID:UCKlrk0/(1)
AA×
[
240
|
320
|480|
600
|
原寸
|
GIF
|
べ
|
レス栞
|
レス消
]
528: 310 [sage] 2021/05/14(金) 00:24:09.18 ID:UCKlrk0/ sqlite3でエラーになる原因がほぼ特定できて、エラー処理を全面見直しました。 ・棋譜追加処理のトランザクションのCOMMITの際にBUSY状態の継続を検出した時は、 ロールバックして再度更新をやり直すという形に変更。棋譜とBOOKの整合性を保つため にも、速度面でもトランザクションは必須。 ・SQL文の事前コンパイルであるprepareでもBUSYが発生する事がわかったので、エラー 処理を行ってBUSY検出して成功するまで繰り返す事で、prepareの完了を保証する これらにより2プロセスまでのデッドロックは何度も検出してロールバックしてやり直しが 完遂するのが確認できています。 が、3つ以上の棋譜作成プロセスを同時に動かした時に、たまたま棋譜追加のタイミングが 3つ揃うと三すくみ的なデッドロック的状況になってしまうようで、ロールバックしてリトライが 3プロセスで順番に発生して無限ループに的に繰り返される状態になってしまう…。 2プロセスでは起きた事は無いのですが、3つだと起きる模様。 まだまだsqlite3の理解が足りないようです。 http://mevius.5ch.net/test/read.cgi/gamedev/1574503798/528
でエラーになる原因がほぼ特定できてエラー処理を全面見直しました 棋譜追加処理のトランザクションのの際に状態の継続を検出した時は ロールバックして再度更新をやり直すという形に変更棋譜との整合性を保つため にも速度面でもトランザクションは必須 文の事前コンパイルであるでもが発生する事がわかったのでエラー 処理を行って検出して成功するまで繰り返す事での完了を保証する これらにより2プロセスまでのデッドロックは何度も検出してロールバックしてやり直しが 完遂するのが確認できています が3つ以上の棋譜作成プロセスを同時に動かした時にたまたま棋譜追加のタイミングが 3つ揃うと三すくみ的なデッドロック的状況になってしまうようでロールバックしてリトライが 3プロセスで順番に発生して無限ループに的に繰り返される状態になってしまう 2プロセスでは起きた事は無いのですが3つだと起きる模様 まだまだの理解が足りないようです
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 108 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
ぬこの手
ぬこTOP
0.042s