私のobjective-ciOSプログラムがロックアップしている、この(まれな)奇妙なケースがあります。デバッガーに侵入すると、2つのスレッドがあり、両方とも@synchronized()でスタックしています。
@synchronizedを完全に誤解しない限り、それが可能であり、コマンドの要点であるとは思いませんでした。
メインスレッドとワーカースレッドの両方がsqliteデータベースにアクセスする必要があるため、データベースにアクセスしているコードのチャンクを@synchronized(myDatabase)ブロックでラップします。これらのブロックでは、dbアクセス以外はほとんど発生しません。
FMDatabaseフレームワークを使用してsqliteにアクセスしていますが、それが重要かどうかはわかりません。
myDatabaseは、FMDatabaseオブジェクトを含むグローバル変数です。プログラムの開始時に1回作成されます。