ふるすたっくえんじにあっぽい人の日記

ASP .NET MVC (C#)、.NET Framework、iOS (Objective-c) アプリ、Androidアプリ (Java)、AWS、たまにLAMPとかプロジェクトマネジメントあたりのお話

【iOS】マルチスレッド入門1.マルチスレッドってなに

ひさびさにVisual Studio触ったらテンションあがりました。

すいません、眠すぎててきとーです。

マルチタスク

マルチスレッドの説明に入る前にマルチタスクの説明から!

簡単に言うとアプリケーションの処理を人間にわからないくらいちょー高速に切り替えて、
あたかもいろんなアプリケーションが実行されてるかのように見せかけること。
アプリケーションの処理のことをタスクとかプロセスって言ったりしますねー
音楽聞きながら、メール書いたり、ネットサーフィンしたりできるのはマルチタスクのおかげですねー

で、これはOSが提供する機能です。記憶が正しければWidowsはXP以降、iOSは4以降かな?
わたくし、Windows XP,iOS4からそれぞれ触りだしてるので、古いことは知りませんw

マルチスレッド

じゃあマルチスレッドってなに?って
単一のアプリケーションの特定の操作を人間にわからないくらいちょー高速に切り替えて、
あたかもいろんな処理が同時に実行されてるかのように見せかけること。
たとえば、ブラウザでファイルダウンロードするときとかXX%みたいに表示されたり、ぐるぐる表示されたりするのがマルチスレッドですね。
ファイルダウンロードしながら、%表示更新したり、ぐるぐる表示したり、ユーザー操作受け付けたりー

てきとーな図はっときますねw
書くのめんどくさかったのでシングルコアでの説明です。
シングルコア/デュアルコアの説明はいらんよね?

f:id:devdevdev:20140418032912p:plain

赤で囲んだ部分を並列に処理することをマルチタスク
青で囲んだ部分を並列に処理することをマルチスレッド
まぁこんな感じなんだなーってわかればいいと思います、はい。

マルチスレッドの利点

・前提
マルチスレッドじゃないときのことをシングルスレッドって呼びます
あくまで概念の話なのでオーバーヘッドとかは無視します

30秒かかる処理を3種類実行するとき
・シングルスレッドの場合
処理1をやって、処理2をやって、処理3をやって、トータル90秒かかりますねー
・マルチスレッドの場合
処理1、処理2、処理3が同時に実行できてトータル30秒で終わっちゃうんですねー
この場合スレッドは3つですねー
あら、すごい!ってことでここらへんの詳しい話とかじゃあいつ使うの?って話はまた次回ー

あぁ、仕事しよ。。
山積み山積みひゃっほーい。。
ありがたいんですけどね。。ねむいし。。
自分の仕事というかサービスに手つけられへんねん。