問題タブ [grand-central-dispatch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - -performSelector:withObject:afterDelay:のように、遅延後にブロックをトリガーするにはどうすればよいですか?
を使用するのと同じように、遅延後にプリミティブパラメータを使用してブロックを呼び出す方法はありますが、 //のperformSelector:withObject:afterDelay:ような引数を使用しますか?intdoublefloat
iphone - GCDのブロック内にNSAutoreleasePoolを作成する必要がありますか?
通常、バックグラウンドスレッドを生成するか、NSOperationQueueでNSOperationを実行する場合、デフォルトでは存在しないため、そのスレッドまたは操作のNSAutoreleasePoolを作成する必要があります。
同じルールが、Grand Central Dispatchキュー内に配置され、非メインスレッドで実行されるブロックに適用されますか?つまり、メインキュー以外にディスパッチする各ブロック内にNSAutoreleasePoolを作成する必要がありますか?
私の限られたテストでは、バックグラウンドスレッドまたはNSOperationsで通常表示される自動解放されたオブジェクトのコンソール警告は表示されません。しかし、これに関する明確なドキュメントが見つからないようです。そのため、誰かがこれがどこに記載されているかを指摘できるかどうか疑問に思いました。
macos - 呼び出し時にEXC_BAD_ACCESSをトリガーするGCDブロック
ガベージコレクションされていないMacFUSECocoaアプリケーションを作成しています。その中で、GCDブロックをデリゲートとして使用したいと思います。ただし、ブロックの呼び出し中にプログラムがクラッシュしEXC_BAD_ACCESS、トレイルにのみが残ります。
私のプログラムは、ガベージコレクション(または64ビット)をサポートしないMac OS10.5SDKに対して構築されたフレームワークとMacFUSEフレームワークを使用しています。プログラムは、32ビットプログラムとして警告やエラーなしでビルドされます。その他のビルド設定(最適化レベルなど)は元の値のままでした。
だから私は私のアプリケーションコントローラーを持っており、そこからこのブロックを作成して呼び出しますrunWithContinuation:
runWithContinuation:ブロックを保持し、ペン先をインスタンス化します。ブロックは、ユーザーが「開く」ボタンを押してパスワードプロンプトを閉じたときにのみ呼び出されます。
私の問題は、をcontinuation()押すと、プログラムがをトリガーしEXC_BAD_ACCESS、最後のスタックフレームがと呼ばれること??です。そのすぐ下にopen:メソッド呼び出しがあります。
どこから来たのか本当にわかりません。NSZombiesは有効になっており、何も報告しません。
何か案は?
iphone - CoreData を使用したグランド セントラル ディスパッチ (GCD)
アプリケーションで Grand Central Dispatch (GCD) を使用して、重い作業を行っています。アプリケーションは、データ ストレージの目的で Core-Data を使用しています。これが私のシナリオです(関連する質問とともに):
の結果として[self saveManagedObjectContext]、fetchResultsControllerデリゲート メソッドが自動的に呼び出されます。その結果、UI 更新ロジックが開始されます。
今私の質問は、main_queueforを使用する必要があり-saveManagedObjectContextますか? ですべての操作を実行する必要がNSManagedObjectありmain_queueますか? を更新する一部の操作には、NSManagedObject2 ~ 3 秒かかる場合があります。お知らせ下さい。
iphone - グランドセントラルディスパッチ(GCD)と非同期API
TwitterAPIを使用してツイートを投稿しています。時間がかかる場合があるので、バックグラウンドで「ツイート投稿」操作を実行したいと思います。そのために私は次のようにGCDを使用しています:
問題は、デリゲートコールバックを取得していないことです。私は何が欠けていますか?
objective-c - 非同期にディスパッチされたブロックが終了するのを待つにはどうすればよいですか?
GrandCentralDispatchを使用して非同期処理を行うコードをテストしています。テストコードは次のようになります。
テストは、操作が終了するまで待機する必要があります。私の現在の解決策は次のようになります。
どちらが少し粗雑に見えますか、あなたはより良い方法を知っていますか?キューを公開してから、dispatch_sync:を呼び出すことでブロックできます。
…しかし、それは多分あまりにも多くを公開していobjectます。
ios - GCDよりNSOperationに適したタスクはどれですか?
iPhone用にプログラミングするときNSOperationに使用するよりも、使用するのに適したタスクはどれですか?GCD
私には、彼らは同じことをしているように見えます。どちらか一方の長所と短所がわかりません。
multithreading - performSelectorInBackground: の呼び出し: バックグラウンド スレッドから
performSelectorInBackground:...バックグラウンドで実行されているメソッドから呼び出すことの実際の効果は何ですか? 非同期で実行したい
例えば:
_imageBufferWasUpdated はバックグラウンドで実行され、_loop メソッドを非同期で呼び出したい (バックグラウンドでも、_imageBufferWasUpdated はすぐに終了し、おそらく _loop が終了する前に終了する)。
これは正しいです?
GCD を使用してこれを行うためのより効率的な (そして比較的単純な) 方法はありますか? GCDを使用してこれをフォークする方法の例を挙げていただければ幸いです。メイン スレッド、_imageBufferWasUpdated を実行するためのバックグラウンド スレッド、および _loop のためのその他のバックグラウンド スレッドの少なくとも 3 つのスレッドが必要だと思います。私は正しいですか?
よろしくお願いします イグナシオ
iphone - ロックの代わりにGCDキュー:TableviewのcellForRowAtIndexPathのデータを読み取る
あるAppleのサイトでは、ロックの代わりにGCDキューを使用するための推奨パターンがあります。
プロデューサースレッドが1つずつではなく、一度に多くのツイートを追加し、UITableViewのcellForRowAtIndexPathについて一度に1つのツイートを読み取る必要がある場合、GCDのロックとクリティカルセクションをどのように処理しますか?
「読み取り」ごとに「同期」を維持した場合、不要なブロックが多数発生することはありませんか?これは実際にはたまに書くことですが、頻繁に読むシナリオです。
objective-c - 複数のファイルを開くためのグランドセントラル戦略
(1) ファイルを開き、「queue1」で OpenSSL DSA ハッシュを計算し、(2) 「queue2」で後で検証するために新しい「サイド カー」ファイルにハッシュを書き出す、Grand Central ディスパッチ キューを使用した実用的な実装があります。 .
同時に複数のファイルを開きたいのですが、何百ものファイルを開いてハードドライブの持続可能な出力を超えてOSを「チョーク」しないロジックに基づいています。iPhoto や Aperture などの写真閲覧アプリは、複数のファイルを開いて表示するようですので、これはできると思います。
アプリケーションは (理論的には) 複数のファイルを同時に読み書きできるため、最大の制限はディスク I/O になると思います。
助言がありますか?
ティア