タグ

マルチスレッドに関するakatakunのブックマーク (5)

  • NSOperationQueue スレッドと処理の関係 - A Day In The Life

    iOS4 になって NSOperationQueue クラスの仕様に追加がありました。以前は並列処理しか出来なかったのですが mainQueue メソッドが追加になり逐次処理も出来るようになりました。変更点も含めて NSOperationQueue の使い方をまとめてみます。 NSOperationQueue クラスの使い方をきちんと理解していると NSOperation クラスの非並列実行モードと並列実行モードの使い方を間違えることも少ないと思います。 NSOperation クラスについては以下の記事で詳しく説明しています。 NSOperation 非並列実行モードと並列実行モードの使い分け NSOperationQueue と NSOperation の関係 NSOperationQueue と NSOperation を使うと、バックグラウンドで何か処理をしたい場合に一連の処理をま

    NSOperationQueue スレッドと処理の関係 - A Day In The Life
  • もう怖くないCocoaの並列処理(GCD & NSOperation/NSOperationQueue) - $ cat /var/log/shin

    Cocoaの並列処理(GCDとNSOperation/NSOperationQueue)に関するまとめです。この記事ではいわゆる「スレッド」については扱いません。スレッドについては、前に記事を書いたのでそちらを参照してください。 Cocoaのマルチスレッドシステム - $ cat /var/log/shin スレッドによる並列処理からの脱却 スレッドは、歴史のある並列処理のための概念ですが、OSのカーネルの方にも密接に関わりがあるなど、抽象度は低めと言えます。 そこで、Cocoaでは、並列処理のための抽象度の高いインターフェースが提供されるようになりました。それがGCDとNSOperation/NSOperationQueueです。これらを使えば、スレッドを何個作成してタスクをどのように実行するか等の細かいことは、ランタイム側が全て決定してくれるので、ユーザは、並列処理したいタスクを定義し

    もう怖くないCocoaの並列処理(GCD & NSOperation/NSOperationQueue) - $ cat /var/log/shin
  • Go並行処理パターン

    https://classmethod.connpass.com/event/55140/ の発表資料 Goの並行処理に必要な幾つかの機能と、それをつかったサンプルをご紹介

    Go並行処理パターン
  • JavaのThreadLocalとスレッドセーフについて - Qiita

    はじめに Struts でシステムを開発していたときに、Actionで格納した値がJSPに反映されない問題が発生しました。この問題を調査した結果、Action#exceuteメソッドの引数をActionのインスタンス変数に格納して使用していたことが原因でした。このときに問題となったソースコードと解決方法を解説します。サンプルコードはこちらです。 マルチスレッドとスレッドセーフ スレッドセーフとはアプリケーションをマルチスレッドで動作(複数のスレッドが同時並行的に実行)しても問題がないことを指します。スレッドセーフでない場合は、あるスレッドで変更した共有データが、他のスレッドによって上書きされてしまう可能性があります。Webサーバーやデータベースなどのサーバー用ソフトウェアは、マルチスレッド(マルチプロセス)で動作しているので、サーバー向けアプリケーションを開発するときは、マルチスレッドで動

    JavaのThreadLocalとスレッドセーフについて - Qiita
    akatakun
    akatakun 2016/12/08
    スタック領域はスレッドごとに用意され、ヒープ領域はスレッドごとに用意されない,ローカル変数はスタック領域に確保されるためスレッドセーフである
  • CoreDataによる並列処理 - Qiita

    注意点 基的に以下の2点に注意する必要がある。 NSManagedObjectContextはスレッドセーフではない NSManagedObjectはスレッドセーフではない ベストプラクティス NSManagedObjectContextはスレッド(キュー)を指定して生成する。 // メインスレッド用のNSManagedObjectContext NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; // バッググラウンドスレッド用のNSManagedObjectContext NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] initWit

    CoreDataによる並列処理 - Qiita
    akatakun
    akatakun 2016/11/28
    スレッドセーフにするための対策
  • 1