grand-central-dispatch

    2

    2答えて

    私はGCDを使ってインターネットからバックグラウンドを読み込んでいます。これは小さな欠点を除いて素晴らしい作品です。私のアプリでは3つのタブがあり、いずれかのタブをクリックするとGCDが適切なタブのバックグラウンド読み込みを開始します。ユーザが第1のタブから第2のタブに移動することを決定した場合(GCDが第1のタブのダウンロードデータを開始したとき)、第1のタブに再び戻る。 GCDは別のバックグラ

    0

    1答えて

    私のプロジェクトでは、複数のスレッドからファイルを読み書きしているので、ファイルロックを実装する必要があります。私はfcntl()を試しましたが、その機能はスレッド間ではなく、プロセス間のロックでしか動作しないようです。このように、私は別の解決策を探しています。私が思いついた解決策(おそらくベストではないでしょう)は、レコードがロックされているかどうかを示すファイル内の各レコードに1バイトを持つこ

    4

    2答えて

    私はブロックを使ってObjective-Cのreduce [inject、fold、何でもそれを呼び出す]関数の実装を調査していましたが、関数が適用された計算を並列化する技術があるのか​​疑問に思っていましたassociative(例えば、整数の集合)? - (id)reduceWithBlock:(id (^)(id memo, id obj))block andAccumulator:(id)

    27

    2答えて

    gcdクエリを中断するのに問題があります。ここでは、問題を示し、いくつかのコードは次のとおりです。、解除と再初期化クエリQ機能テストが二度目に呼ばれているが、apparenty私のコードが間違っていると、両方のインスタンスの私は中断されてやろうとしている static dispatch_queue_t q=nil; static void test(int a){ if(q){

    11

    3答えて

    私はキューがループしている間、短期間待ちます。私は自分のオプションを考えており、キューを再開するのをテストしていましたが、それはいくつかの可動部分を必要とするようです。だから、代わりに睡眠や睡眠を使うことを検討しています。それは一般的なスレッディング機能のほうが多く、スリープを避けて、GCDオプションをつけて待ち行列を一時停止させるべきかどうかを知りたいと思っています。 私は関連する1つの質問を見

    13

    1答えて

    今は、ブロックを使ってコレクションを繰り返し、共有データに書き込むことも、副作用を起こすこともありません。私はNSEnumerationConcurrentオプションを追加することを検討し、それを使用する価値があるときは分かりません。 私は具体的な質問とより一般的な質問があります。 最初の質問:ここでは同時に些細な何かをするブロックを使用したのかもしれない少し不自然な例です:非並行列挙だけでなくて

    5

    2答えて

    私は1つのコールを持っていると思いますが、非同期に発生する、のと同等: doThisInASecondThreadThenHaveThisThreadDisappear:@selector(myMethod); は、これを達成するためのグランドセントラルディスパッチコールは何ですか?私はそれが初めてで、キューイングで複雑なものをすべて失ってしまいます。私はそれを達成することができる事を理解しますが

    4

    2答えて

    私は作成時にポインタを返さないことに気付きましたが、実際のオブジェクトはありません。私の中で dispatch_queue_t* queue; *queue = dispatch_queue_create("double_buffer_protection_queue", DISPATCH_QUEUE_SERIAL); C++プログラマはそれが動作するはずと言うが、それはBAD_ACCESS

    9

    3答えて

    私はキューを使い慣れていません。以下のスキームを設定する際にいくつか問題があります。 私には3つのタスクがあります。 タスクA:メインキューでのみ実行できます。タスクBと非同期で実行でき、タスクCと非同期で実行できません。実行頻度は高くなりますが、かなり速く実行されます。 タスクB:任意のキューで実行できます。タスクAと非同期で実行できます。タスクCと非同期に実行できません。実行はまれですが、実行

    8

    2答えて

    ディスパッチキューを使用して、一連のバックグラウンドタスクを管理しています(ユーザーの要求に応じて複数のファイルをダウンロードし、UIで待機することはありません)。また、未完了のタスクを永続化する必要があります。たとえば、ネットワークの到達可能性がなくなった場合や、アプリケーションがクラッシュしたり、バッテリが消耗した場合は、次にアプリケーションを実行したときにすべてのタスクが自動的に再開します。