シリアルバックグラウンドスレッドを作成および管理する方法

mkc842

私のアプリはクラウドデータベースとコアデータの間で多くの同期を行う必要があり、これはさまざまな方法で発生します。私は単純なバックグラウンドスレッドを使用してこれを行います:

dispatch_queue_t backgroundThread = dispatch_queue_create("background thread", NULL);

dispatch_async(backgroundThread, ^{ ...

ただし、アプリで処理を高速に行うと、異なる同期タスクが同時に発生する可能性があり、意図しない結果が生じる可能性があります。

したがって、すべての同期タスクを1つのスレッドでシリアルに実行したいと思います。同期タスクを実行する必要があるときはいつでも、専用スレッドにディスパッチし、そのスレッドが以前に送信されたすべてのタスクを完了するまで実行されないようにします。どのように管理すればよいですか?具体的には...

  1. バックグラウンドシリアルスレッドをインスタンス化するにはどうすればよいですか?
  2. アプリの存続期間中それを保持するための措置を講じる必要がありますか、それとも(これが問題であるかどうかわからない)使用していないときにリリースしてから再作成する必要がありますか?
  3. さまざまなメソッド/オブジェクトから参照/ディスパッチするにはどうすればよいですか?

この状況に直接対処する答えを見つけることができませんでした。これ(iOSデータ処理に単一の共有バックグラウンドスレッドを使用していますか?)は近づきましたが、避けました。

御時間ありがとうございます。

組み合わせ論

次のような静的関数を介してキューにアクセスします。

static dispatch_queue_t my_serial_queue() {

    static dispatch_queue_t s_serial_queue;
    static dispatch_once_t s_done;
    dispatch_once(&s_done, ^{s_serial_queue = dispatch_queue_create("com.app.my_queue_name", DISPATCH_QUEUE_SERIAL);});
    return s_serial_queue;
}

次に、このように使用します...

dispatch_sync(my_serial_queue(), ^{
    //do something here
});

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

コマンドでハードドライブをシャットダウン/スリープおよびウェイクアップする方法は?

分類Dev

バックグラウンドスレッドでQFileSystemModelのカスタムアイコンを作成する方法

分類Dev

(SQLコードを使用して)完全な差分およびトランザクションログのバックアップを作成する方法

分類Dev

アプリケーションを更新するようにユーザーに促す方法、およびユーザーが更新をクリックすると、バックグラウンドで更新する必要があります

分類Dev

node.jsでバックグラウンドシングルスレッドFIFOジョブキューを作成する方法

分類Dev

RailsまたはSinatraアプリ-バックグラウンドスレッドを維持する方法

分類Dev

要素で定義された高さ(vh)を使用する場合の、Boostrapグリッド、オーバーフロースクロール、およびレスポンシブレイアウトに関する問題

分類Dev

非GUIクラスおよびメインGUIクラスで検出できる非GUIスレッドからシグナルを発行する方法

分類Dev

デバッグおよびリリースモードでトライアルライセンスを決定する方法

分類Dev

バックグラウンドスレッドからリソースにアクセスする方法

分類Dev

シェルスクリプトでバックグラウンドプロセスをフォアグラウンドに戻すクリーンな方法

分類Dev

起動時およびRaspberryPiのバックグラウンドで無限のwhileループを使用してbashスクリプトを実行する

分類Dev

バックグラウンドでCSS画像をストレッチおよびスケーリングします-CSSのみ

分類Dev

メールを送信するためのバックグラウンドスレッドを作成する

分類Dev

時間をカウントするバックグラウンド(フォアグラウンド?)サービスを作成し、アプリケーションの全期間を通じてUIを更新します(エンドモンドのように)

分類Dev

PipedOutputStream および PipedInputStream を使用するシングル スレッド リーダーを備えたマルチ スレッド ライター

分類Dev

IOSおよびバックグラウンドモードでアプリケーションを終了します

分類Dev

アプリケーションがバックグラウンドに移行する前にシーンメソッドを呼び出す方法は?

分類Dev

ドローアブルリソースをバックグラウンドで使用する方法

分類Dev

デスクトップおよびモバイルのポートレートとランドスケープで機能するレスポンシブな方法でグラフを表示するにはどうすればよいですか?

分類Dev

c#を使用してWindows 8アプリでモバイルサービスを介して画像をアップロードする方法、およびストレージからダウンロード画像をダウンロードする方法

分類Dev

Pythonでバックグラウンドスレッドを停止する方法

分類Dev

asycioバックグラウンドスレッドでaiohttpを使用する方法

分類Dev

FirebaseMessaging-アプリがバックグラウンドにあるときにヘッドアップディスプレイを作成する

分類Dev

ios - アプリがバックグラウンドでコア データを削除および更新するようにする (目的 c)

分類Dev

バックグラウンドスレッドがアクションをスケジュールするときにNullReference例外をスローするRxTestScheduler

分類Dev

JavaFXでハードウェアグラフィックアクセラレーション(プリズム)を無効またはバイパスする方法

分類Dev

バックグラウンドでシェルスクリプトを実行する方法は?

分類Dev

シェル スクリプトでバックグラウンド ジョブの数を制御する方法

Related 関連記事

  1. 1

    コマンドでハードドライブをシャットダウン/スリープおよびウェイクアップする方法は?

  2. 2

    バックグラウンドスレッドでQFileSystemModelのカスタムアイコンを作成する方法

  3. 3

    (SQLコードを使用して)完全な差分およびトランザクションログのバックアップを作成する方法

  4. 4

    アプリケーションを更新するようにユーザーに促す方法、およびユーザーが更新をクリックすると、バックグラウンドで更新する必要があります

  5. 5

    node.jsでバックグラウンドシングルスレッドFIFOジョブキューを作成する方法

  6. 6

    RailsまたはSinatraアプリ-バックグラウンドスレッドを維持する方法

  7. 7

    要素で定義された高さ(vh)を使用する場合の、Boostrapグリッド、オーバーフロースクロール、およびレスポンシブレイアウトに関する問題

  8. 8

    非GUIクラスおよびメインGUIクラスで検出できる非GUIスレッドからシグナルを発行する方法

  9. 9

    デバッグおよびリリースモードでトライアルライセンスを決定する方法

  10. 10

    バックグラウンドスレッドからリソースにアクセスする方法

  11. 11

    シェルスクリプトでバックグラウンドプロセスをフォアグラウンドに戻すクリーンな方法

  12. 12

    起動時およびRaspberryPiのバックグラウンドで無限のwhileループを使用してbashスクリプトを実行する

  13. 13

    バックグラウンドでCSS画像をストレッチおよびスケーリングします-CSSのみ

  14. 14

    メールを送信するためのバックグラウンドスレッドを作成する

  15. 15

    時間をカウントするバックグラウンド(フォアグラウンド?)サービスを作成し、アプリケーションの全期間を通じてUIを更新します(エンドモンドのように)

  16. 16

    PipedOutputStream および PipedInputStream を使用するシングル スレッド リーダーを備えたマルチ スレッド ライター

  17. 17

    IOSおよびバックグラウンドモードでアプリケーションを終了します

  18. 18

    アプリケーションがバックグラウンドに移行する前にシーンメソッドを呼び出す方法は?

  19. 19

    ドローアブルリソースをバックグラウンドで使用する方法

  20. 20

    デスクトップおよびモバイルのポートレートとランドスケープで機能するレスポンシブな方法でグラフを表示するにはどうすればよいですか?

  21. 21

    c#を使用してWindows 8アプリでモバイルサービスを介して画像をアップロードする方法、およびストレージからダウンロード画像をダウンロードする方法

  22. 22

    Pythonでバックグラウンドスレッドを停止する方法

  23. 23

    asycioバックグラウンドスレッドでaiohttpを使用する方法

  24. 24

    FirebaseMessaging-アプリがバックグラウンドにあるときにヘッドアップディスプレイを作成する

  25. 25

    ios - アプリがバックグラウンドでコア データを削除および更新するようにする (目的 c)

  26. 26

    バックグラウンドスレッドがアクションをスケジュールするときにNullReference例外をスローするRxTestScheduler

  27. 27

    JavaFXでハードウェアグラフィックアクセラレーション(プリズム)を無効またはバイパスする方法

  28. 28

    バックグラウンドでシェルスクリプトを実行する方法は?

  29. 29

    シェル スクリプトでバックグラウンド ジョブの数を制御する方法

ホットタグ

アーカイブ