問題タブ [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.
ios - コードで SQLITE_THREADSAFE を設定する/Sqlite をスレッドセーフにする
ばかげているように聞こえSQLITE_THREADSAFE
ますが、コードのどこに設定すればよいでしょうか。Sqlite
アプリのデータベースは、非同期でアクセスしている複数のインスタンスで使用されています。したがって、データベースをスレッドセーフにしたいと考えています。声明の1つは次のとおりです。
instance - 同じアプリの 2 つのインスタンスを実行 - 分割ビュー
iPad air や iPad Pro には手を出していませんでした。2 つの分割ビューで同じアプリの 2 つのインスタンスを実行することは可能ですか?
objective-c - 複数のスレッドを持つ NSCondtion
方法 1:
方法 2:
Thread 1が method1 にある場合、実行すること[_condition waitUtilDate ...];
でロックが解除されます。 スレッド 2 はこの領域に入り、さらに を実行して条件を待ち[_condition waitUtilDate ...]
ます。
スレッド 1とスレッド 2の両方がブロック ( request 1 request 2 ) をキューに入れ、リモートから同じデータを取得しました。リクエスト 1が終了すると、メソッド 2 を呼び出して _condition を通知します。
私の質問は次のとおりです。
- Thread 1とThread 2のどちらが通知されますか?
- リクエスト 1とリクエスト 2は同じことを行っているため、両方のスレッド ( ) にシグナルを送って、リクエスト 1が終了したときにリクエスト2
broadcast
をキャンセルできます。ただし、より良い方法は、リクエスト 1が送信された後、スレッド 2がクリティカル エリアに入るの を拒否することです。しかし、クリティカルエリアに入る前に2回ロックすることはできませんでした. それで、なにかお手伝いできますか?
ありがとう。
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 のドキュメントにはスレッドセーフであると書かれていますが、この問題を解決する方法がわかりません。
ヘルプ!
ios - スレッド間の GCD 設定スケジューリング/優先度
カメラからフレームをキャプチャし、別のスレッドによって更新された画像をブレンドするアプリに取り組んでいます。私の問題は、500 ミリ秒ごとに呼び出されるイメージ作成スレッドが、他のスレッドに影響を与えるピーク コンピューティング パワーを消費することです。
明確にするためにいくつかのログを次に示します。
ご覧のとおり、captureOutput のフレーム レートは 30 fps を超えています。motionCallback が画像を作成するとすぐに、フレーム レートが低下し、その後再び上昇します。motionCallback() は 15 番目のキャプチャ フレームごとにしか呼び出されないため、平均的な計算能力で十分であることに注意してください。
captureOutput() は、次のように作成されたキューで実行されています。
後で、AVCapture を次のようにセットアップします。
motionCallback() は次のように設定されます。
以降:
そして、次のような generateImage():
アイデアは、CoreMotion システムが更新を取得するたびに、新しいイメージを生成することです。
私の質問は、フレーム レートの低下の原因となるピーク CPU 電力を消費しないように、motionCallback() の計算時間を平均化するにはどうすればよいですか? したがって、10 倍長く実行することは受け入れますが、その間は CPU の 1/10 しか消費しません。
これを制御する方法はありますか?
ありがとうクリス
ios - dispatch_barrier_async はグローバル キューに影響しないようですか?
GCD関数dispatch_barrier_async
を試してみると、によって作成されたキューで期待どおりに機能しましたdispatch_queue_create
が、によって作成されたグローバルキューに配置するとdispatch_get_global_queue
、バリアが機能しなくなったようです= =、誰か説明できますか? ありがとう〜
デモ画像
swift - Swiftでスレッドが無期限に実行されないようにする方法は?
実装が見えないライブラリから関数を実行しています。
このライブラリ クラスは、私のクラスのデリゲート関数を呼び出します。
. delegateCall is called!
_ self.someClass.beginService();
_
問題は、どうすればこのスレッドを終了できるかということです。私は頼りたくない:
これは、バックグラウンド ルーチンがまだ機能していることを意味するためです。