2009-07-27 12 views
5

iPhoneはマルチタスクとマルチスレッドをサポートしていないと言われました。これはわかりませんでしたので、シミュレータでをテストしました:pthreadsは動作しますが、fork()は動作しません。 この結果になりますが、今ではわかりません:pthreadライブラリも実際のデバイスで動作しますか?iPhone:マルチタスク、マルチスレッド?

ありがとうございました。

+2

この質問はWAYからのものです。フォークはまだ動作しませんが、iOS 4.2はマルチタスクのいくつかの王をサポートしています。 – noamtm

答えて

10

マルチスレッドが機能します。それはマルチタスクではありません。 iPhoneは一度に複数のサードパーティ製アプリケーションを実行することはできません。この推論により、アプリケーションのサンドボックスの外部にフォークが存在します。

スレッドを作成してソケットをポーリングしたり、ファイルを読み込んだり、AIプレーヤーを任意に処理したり、パフォーマンスの向上がなくなるまで作成できます。

1

マルチタスクは、デフォルトでは無効になっており、複数のプロセスを起動したり、iPhoneの処理速度を低下させたり、悪意のある行為をしたりすることを防ぎます。

iPhoneのCPUはそれほど高速ではありませんが、一度に1つのプログラムを実行するだけでスピードが出ます。マルチタスクは、iPhoneの速度を落とすオーバーヘッドやその他の問題を引き起こします。

私は実際にマルチスレッドについてはわかりませんが、スレッドは独自のプロセスに含まれているため、動作する可能性が高いようです。

あなたが言ったように、pthreadsは動作し、fork()はそうではないので、論理的にも実際のものと同様に動作します。

0

マルチスレッド化は非常に可能です - iPhoneは実際にMac上で利用可能な同じCocoaスレッドAPIを使用しています。私は描画、ネットワーク通信などを処理するために6スレッドを使用する共同描画アプリケーションを書いています。私はiPhoneが1つのプロセッサしか持っていないので、あまりにも多くのスレッドを作成することは悪い考えです。彼らは私の経験ではうまくいっています!

3

はい、pthreadライブラリはiPhoneでも動作します。代わりに、NSThreadでCocoaネイティブスレッドを使用することもできます。 Appleが明示的にそれを制限しているので、マルチタスクは機能しません。

関連する問題