iPhoneはマルチタスクとマルチスレッドをサポートしていないと言われました。これはわかりませんでしたので、シミュレータでをテストしました:pthreadsは動作しますが、fork()は動作しません。 この結果はになりますが、今ではわかりません:pthreadライブラリも実際のデバイスで動作しますか?iPhone:マルチタスク、マルチスレッド?
ありがとうございました。
iPhoneはマルチタスクとマルチスレッドをサポートしていないと言われました。これはわかりませんでしたので、シミュレータでをテストしました:pthreadsは動作しますが、fork()は動作しません。 この結果はになりますが、今ではわかりません:pthreadライブラリも実際のデバイスで動作しますか?iPhone:マルチタスク、マルチスレッド?
ありがとうございました。
マルチスレッドが機能します。それはマルチタスクではありません。 iPhoneは一度に複数のサードパーティ製アプリケーションを実行することはできません。この推論により、アプリケーションのサンドボックスの外部にフォークが存在します。
スレッドを作成してソケットをポーリングしたり、ファイルを読み込んだり、AIプレーヤーを任意に処理したり、パフォーマンスの向上がなくなるまで作成できます。
マルチタスクは、デフォルトでは無効になっており、複数のプロセスを起動したり、iPhoneの処理速度を低下させたり、悪意のある行為をしたりすることを防ぎます。
iPhoneのCPUはそれほど高速ではありませんが、一度に1つのプログラムを実行するだけでスピードが出ます。マルチタスクは、iPhoneの速度を落とすオーバーヘッドやその他の問題を引き起こします。
私は実際にマルチスレッドについてはわかりませんが、スレッドは独自のプロセスに含まれているため、動作する可能性が高いようです。
あなたが言ったように、pthreadsは動作し、fork()はそうではないので、論理的にも実際のものと同様に動作します。
マルチスレッド化は非常に可能です - iPhoneは実際にMac上で利用可能な同じCocoaスレッドAPIを使用しています。私は描画、ネットワーク通信などを処理するために6スレッドを使用する共同描画アプリケーションを書いています。私はiPhoneが1つのプロセッサしか持っていないので、あまりにも多くのスレッドを作成することは悪い考えです。彼らは私の経験ではうまくいっています!
はい、pthread
ライブラリはiPhoneでも動作します。代わりに、NSThread
でCocoaネイティブスレッドを使用することもできます。 Appleが明示的にそれを制限しているので、マルチタスクは機能しません。
この質問はWAYからのものです。フォークはまだ動作しませんが、iOS 4.2はマルチタスクのいくつかの王をサポートしています。 – noamtm