問題タブ [ios-multithreading]

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.

0 投票する
0 に答える
434 参照

ios - コードで SQLITE_THREADSAFE を設定する/Sqlite をスレッドセーフにする

ばかげているように聞こえSQLITE_THREADSAFEますが、コードのどこに設定すればよいでしょうか。Sqliteアプリのデータベースは、非同期でアクセスしている複数のインスタンスで使用されています。したがって、データベースをスレッドセーフにしたいと考えています。声明の1つは次のとおりです。

0 投票する
1 に答える
627 参照

instance - 同じアプリの 2 つのインスタンスを実行 - 分割ビュー

iPad air や iPad Pro には手を出していませんでした。2 つの分割ビューで同じアプリの 2 つのインスタンスを実行することは可能ですか?

0 投票する
1 に答える
114 参照

objective-c - 複数のスレッドを持つ NSCondtion

方法 1:

方法 2:

Thread 1が method1 にある場合、実行すること[_condition waitUtilDate ...];でロックが解除されます。 スレッド 2 はこの領域に入り、さらに を実行して条件を待ち[_condition waitUtilDate ...]ます。

スレッド 1スレッド 2の両方がブロック ( request 1 request 2 ) をキューに入れ、リモートから同じデータを取得しました。リクエスト 1が終了すると、メソッド 2 を呼び出して _condition を通知します。

私の質問は次のとおりです。

  • Thread 1Thread 2のどちらが通知されますか?
  • リクエスト 1リクエスト 2は同じことを行っているため、両方のスレッド ( ) にシグナルを送って、リクエスト 1が終了したときにリクエスト2broadcastをキャンセルできます。ただし、より良い方法は、リクエスト 1が送信された後、スレッド 2がクリティカル エリアに入るの を拒否することです。しかし、クリティカルエリアに入る前に2回ロックすることはできませんでした. それで、なにかお手伝いできますか?

ありがとう。

0 投票する
0 に答える
397 参照

ios - CFHostCreateWithName の使用中にクラッシュする: 「スレッドを再度開始しようとしています」

ヘルプ!特定のホスト名のアドレスを取得しようとすると、クラッシュが発生しました。クラッシュ ログは次のように表示されます。

1 libobjc.A.dylib 0x0000000197d180e4 objc_exception_throw + 56

2 CoreFoundation 0x0000000186044218 -[NSException initWithCoder:]

3 Foundation 0x0000000186e9528c -[NSThread 開始] + 136

4 ZFirewall7.dylib 0x0000000105e4d768 -[FiPSettingsManager doHostStuff:] + 1124

5 ZFirewall7.dylib 0x0000000105e48424 _ZL23my_CFHostCreateWithNamePPK13__CFAllocatorPPK10__CFString + 164

6 アップロード 0x000000010220d1c0 +[UploadUtil addressesForHostname:] (UploadUtil.m:277)

7 アップロード 0x000000010220d120 +[UploadUtil addressForHostname:] (UploadUtil.m:267)

....

*** -[NSThread start]: スレッドの再起動を試みます

私のコードは次のとおりです。

この関数は複数のスレッドによって呼び出され、CFHostCreateWithName のドキュメントにはスレッドセーフであると書かれていますが、この問題を解決する方法がわかりません。

ヘルプ!

0 投票する
1 に答える
606 参照

ios - スレッド間の GCD 設定スケジューリング/優先度

カメラからフレームをキャプチャし、別のスレッドによって更新された画像をブレンドするアプリに取り組んでいます。私の問題は、500 ミリ秒ごとに呼び出されるイメージ作成スレッドが、他のスレッドに影響を与えるピーク コンピューティング パワーを消費することです。

明確にするためにいくつかのログを次に示します。

ご覧のとおり、captureOutput のフレーム レートは 30 fps を超えています。motionCallback が画像を作成するとすぐに、フレーム レートが低下し、その後再び上昇します。motionCallback() は 15 番目のキャプチャ フレームごとにしか呼び出されないため、平均的な計算能力で十分であることに注意してください。

captureOutput() は、次のように作成されたキューで実行されています。

後で、AVCapture を次のようにセットアップします。

motionCallback() は次のように設定されます。

以降:

そして、次のような generateImage():

アイデアは、CoreMotion システムが更新を取得するたびに、新しいイメージを生成することです。

私の質問は、フレーム レートの低下の原因となるピーク CPU 電力を消費しないように、motionCallback() の計算時間を平均化するにはどうすればよいですか? したがって、10 倍長く実行することは受け入れますが、その間は CPU の 1/10 しか消費しません。

これを制御する方法はありますか?

ありがとうクリス

0 投票する
2 に答える
692 参照

ios - dispatch_barrier_async はグローバル キューに影響しないようですか?

GCD関数dispatch_barrier_asyncを試してみると、によって作成されたキューで期待どおりに機能しましたdispatch_queue_createが、によって作成されたグローバルキューに配置するとdispatch_get_global_queue、バリアが機能しなくなったようです= =、誰か説明できますか? ありがとう〜 デモ画像

0 投票する
1 に答える
2104 参照

swift - Swiftでスレッドが無期限に実行されないようにする方法は?

実装が見えないライブラリから関数を実行しています。

このライブラリ クラスは、私のクラスのデリゲート関数を呼び出します。

. delegateCall is called!_ self.someClass.beginService();_

問題は、どうすればこのスレッドを終了できるかということです。私は頼りたくない:

これは、バックグラウンド ルーチンがまだ機能していることを意味するためです。