3

重複の可能性:
GCD : 2 つのスレッドから変数に読み書きする方法

私はsqliteデータベースを使用しているiOSアプリを開発しています。マルチスレッドを実行する必要がありますが、sqliteデータベースでは一度に1つのことしか実行できません。したがって、セマフォの概念を実装する必要があります。

4

2 に答える 2

4

@synchronizedディレクティブをミューテックスとして使用できます。シングルトンを使用して作成され、プロジェクト全体で共有される単一のデータ マネージャーで sqlite データベースを操作するためのすべてのメソッドがある場合は、そのオブジェクトをロック トークンとして使用できます。

- (void)myMethod:(id)globalDataManager {
    @synchronized(globalDataManager) {
        // Everything between the braces is protected by the @synchronized directive.
    }
}

@synchronized(self)また、データ マネージャー内から同じ保護を使用できます。

これにはミューテックスのみが必要なので、セマフォを実装するための余分なコードについて心配する必要はありません。

于 2012-08-20T06:37:29.980 に答える
0

セマフォの概念を実装する必要があります

セマフォの実装は にあり#include <sys/semaphore.h>ます。

于 2012-08-20T06:39:47.927 に答える