3

私のobjective-ciOSプログラムがロックアップしている、この(まれな)奇妙なケースがあります。デバッガーに侵入すると、2つのスレッドがあり、両方とも@synchronized()でスタックしています。

@synchronizedを完全に誤解しない限り、それが可能であり、コマンドの要点であるとは思いませんでした。

メインスレッドとワーカースレッドの両方がsqliteデータベースにアクセスする必要があるため、データベースにアクセスしているコードのチャンクを@synchronized(myDatabase)ブロックでラップします。これらのブロックでは、dbアクセス以外はほとんど発生しません。

FMDatabaseフレームワークを使用してsqliteにアクセスしていますが、それが重要かどうかはわかりません。

myDatabaseは、FMDatabaseオブジェクトを含むグローバル変数です。プログラムの開始時に1回作成されます。

4

2 に答える 2