-1
こんにちは、データベースのロックされた問題などの問題なしにバックグラウンドスレッドでディスパッチ非同期タスクを処理するsqliteデータベースを管理するためのアイデアやコードがあります。SQLiteデータベースはセカンダリディスパッチ非同期スレッドで動作することができます
こんにちは、データベースのロックされた問題などの問題なしにバックグラウンドスレッドでディスパッチ非同期タスクを処理するsqliteデータベースを管理するためのアイデアやコードがあります。SQLiteデータベースはセカンダリディスパッチ非同期スレッドで動作することができます
xyz.sqlite
ファイルのすべてのクエリを実行するには、xyzDBMgr
クラスを使用してください。 foo1
、foo2
の方法を使用しているとします。 @synchronized
ブロックを使用してテーブルをロックし、スレッドの安全を確保してください。
xyzDBMgr.m
@implementation xyzDBMgr
void foo1
{
@synchronized(self)
{
// your locked code goes here
}
}
void foo2
{
@synchronized(self)
{
// your locked code goes here
}
}
...
@end
別のロック機能の内側にロック機能を呼び出さないでください。あなたが
foo2
からfoo1
を呼び出した場合、デッドロックは明らかです。
あなたがdispathc_async
またはNSOperationQueue API呼び出しのようなリンゴのGCD API呼び出しを使用することができ、二次スレッドからこれらのメソッドを呼び出したい場合。
データベースロックの問題は何ですか?データベースファイルにアクセスしている間は、ロックされます。それは問題ですか? –
同じテーブルの複数のスレッドによって同じ時間にデータベースにアクセスしている間。 –