タグ

Concurrencyとhow toに関するUSAGI-WRPのブックマーク (5)

  • Haskell — ありえるえりあ

    概要 HaskellのスレッドシステムとSTMについて調べたので、ここにまとめます。 Haskellのスレッドシステムは、予想よりも複雑でした。 Haskellの世界で閉じた処理ならば、比較的簡単なのですが、 FFI(Foreign Function Interface: 外部のCの関数を呼び出す仕組み)を使うと、 とたんに複雑になってしまいます。 一度に書くと、量が多いため、数回に分けて書こうと思っています。

  • 第53回 repaを使って行列演算を並列化する

    これまで並行処理のためのデータ型として,第12回ではTVar型やMVar型,第14回ではChan型やTChan型などを取り上げてきました。一方,並列処理のためのデータ型はあまり説明してきませんでした。取り上げたのは,第10回や第24回のコラムで説明したデータ並列Haskellの並列配列くらいです。 たしかに,並列HaskellやParモナドを利用すれば,並列処理のための特別なデータ型を使わなくても並列処理は可能です。しかし,目的とする処理の並列化に特化したデータ型が用意されているのであれば,それを利用したほうが簡単かつ効率的に処理を行えます。 そこで今回は,並列処理用のデータ型の一つとして提供されている「repa(REgular PArallel arrays)」の並列配列の基を説明します。repaはデータ並列Haskellプロジェクトの一環として開発が進められているライブラリです。デー

    第53回 repaを使って行列演算を並列化する
  • 条件変数とダンス(Two-Step Dance)を - yohhoyの日記

    条件変数(condition variable)同期プリミティブに対する待機/通知で発生する現象と回避策のメモ。 条件変数とミューテックスを使ったコードにおいて次のような現象が生じる。 スレッドAが条件変数cvに対して通知を行う。 条件変数cvに対してブロックされていたスレッドBのブロックが解除される。ただし、ミューテックスmtxはスレッドAにロック保持されたままのため、再びスレッドBはミューテックスmtxに対してブロックされる*1。 スレッドAがミューテックスmtxのロックを解放する。 ミューテックスmtxに対してブロックされていたスレッドBがブロック解除され、同ミューテックスのロック獲得に成功する。 #include <pthread.h> int data = 0; // 待機条件: 非0になるまで待機 pthread_mutex_t mtx; pthread_cond_t cv;

    条件変数とダンス(Two-Step Dance)を - yohhoyの日記
  • Haskellで並行処理 - napthats’

    forkIOでスレッドを起動できる。forkIOは(IOモナドに包まれた)スレッドIDを返すので、取っておいて後でkillThreadするとThreadKilled例外を投げて終了できる。 import Control.Concurrent main :: IO () main = do id <- forkIO $ subThread 0 threadDelay 5000000 killThread id subThread :: Int -> IO () subThread num = do putStrLn $ "loop " ++ (show num) threadDelay 1000000 subThread $ num + 1 スレッド間でメッセージを送受信したい場合は、MVarを使う。MVarは容量1のメッセージボックスで、既にメッセージが入ってる時に更に書き込もうとするとブ

    Haskellで並行処理 - napthats’
  • VISUAL C++ 2010 と Parallel Pattern Library

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 VISUAL C++ 2010 と Parallel Pattern Library Kenny Kerr このコラムは、Visual Studio 2010 のプレリリース バージョンに基づいています。記載されているすべての情報は、変更される場合があります。 目次 言語拡張 並列アルゴリズム タスクとタスク グループ Visual C++ は、Visual Studio 2010 のリリースで大幅にアップグレードされます。言語やライブラリの新しい機能の多くは、開発者の要望をより簡単に、より自然にコードで表現できるようにすることだけを考えて設計されています。しかし、これまでと同様、これらの機能を組み合わせるこ

    VISUAL C++ 2010 と Parallel Pattern Library
  • 1