1。序文
最近、私はマルチスレッドの理解を深めることを望んで、マルチスレッドに再びインタビューし、レビューしていました。
1。プロセスとは何ですか?
1)。スレッドを理解するには、まずプロセスを理解する必要があります。素人の用語では、プロセスはシステムで実行されているアプリケーションです。
2)。各スレッドは独立して存在し、専用および保護されたメモリスペースで実行されます。
3)。たとえば、QQまたはXcodeシステムを開くと、図に示すように2つのプロセスが個別に開かれます。
4)「アクティビティモニター」を介してMACシステムで有効なプロセスを表示できます。
2。スレッドとは何ですか?
1)。プロセスには、タスクを実行するためのスレッドが必要です。つまり、プロセスには少なくとも1つのスレッドが必要です。
2)。スレッドはプロセスの基本的な実行単位であり、プロセスのすべてのタスク(プログラム)がスレッドで実行されます。
3)。たとえば、クゴウを使用して音楽を演奏し、サンダーを使用して映画をダウンロードして、図に示すようにスレッドで実行する必要があります。
3.スレッドシリアルとは何ですか?
1)。スレッドは連続的に実行されます(順次実行されます)。つまり、スレッドは同じ時間内に1つのタスクのみを実行できます。
2)。 1つのスレッドなどのシリアル実行図は、3つのファイルをダウンロードします(ファイルA、B、C)
4。マルチスレッドとは何ですか?
1)。複数のスレッドをプロセスで開くことができ、各スレッドは同時に(同時に)異なるタスクを実行できます。
2).similar関係リスト:プロセス---->ワークショップ。スレッド---->ワークショップワーカー
3)。 3つのファイルをダウンロードするために3つのスレッドを同時に開くなどのマルチスレッド図(ファイルA、B、C)
5。マルチスレッドの原則
1)。同時に、CPUは1つのスレッドのみを実行でき、1つのスレッドのみが機能しています(実行)。
2)。マルチスレッドの同時(同時)実行は、実際には複数のスレッド間のCPUスケジュール(スイッチ)です。
3)。 CPUがスレッドを十分に迅速にスケジュールする場合、マルチスレッドの同時実行の錯覚を引き起こします。
4)。マルチスレッドの短所:
1.各スレッドは、一定の量のメモリスペースを占有します(デフォルト:メインスレッドは1MBを占有し、子スレッドは512kbを占有します)。
あまりにも多くのスレッドがオンになっている場合、それは多くのメモリスペースを占有し、プログラムのパフォーマンスが低下します。
2。スレッドが多いほど、CPUスケジューリングスレッドのオーバーヘッドが大きくなります(工場労働者が多いほど、工場のオーバーヘッドが大きくなります)。
3.プログラミングをより複雑にする:複数のスレッド間のマルチスレッドデータ通信やデータ共有など。
5)。マルチスレッドの利点:
1。プログラムの実行効率を適切に改善できます。
2。リソースの使用率を適切に改善できます(CPUおよびメモリ利用)
6。メインスレッドは何ですか?
1).IOSプログラムが開かれた後、デフォルトでスレッドが開かれます。このスレッドは、「メインスレッド」または「UIスレッド」と呼ばれます。
2)。メインスレッドの主な機能:
1。UIインターフェイスを表示/更新します
2。UIイベント(クリックイベント、イベントのスクロール、イベントのドラッグなど)を処理する
3)。メインスレッドに関するメモ:
1.メインスレッドに時間のかかる操作を配置しないでください。メインスレッドでの時間のかかる操作は、プログラムの遅れを引き起こします。
7。時間のかかる操作デモ
1)メインスレッドで直接実行されるデモ
- (void)touchesbegan:(nsset <uitouch *> *)reace withevent:(uievent *)event {//現在の実行方法と現在のスレッドを取得します// number == mainスレッド//番号!=他のスレッド、子スレッド、nslog(@"%s ----% UI stutter to Stutter [self longtime-operation];}#pragma mark-time-suming operation-(void)longtime-operation {for(int i =; i <; i ++){nslog(@"%d"、i);}}}2)チャイルドスレッドで実行されているデモ
- (void)touchesbegan :( nsset <uitouch *> *)reace withevent:(uievent *)event {//現在の実行方法と現在のスレッドを取得します// number == mainスレッド//番号!=他のスレッド、子スレッド、nslog UI操作に影響を与えずに実行する子スレッド[Self PerformseCherectorinbackground:@Selector(Longtime-operation)with object:nil];}上記のコンテンツは、編集者が紹介したiOSのマルチスレッド知識です。それがあなたに役立つことを願っています!