タグ

queueに関するUSAGI-WRPのブックマーク (2)

  • Boost.Lockfree ロックフリーキュー - Faith and Brave - C++で遊ぼう

    Boost 1.53.0には、Boost.Lockfreeという並行コンテナのライブラリが入りました。 このライブラリにはスタックとキューが用意されていますが、よく使うのはキューの方でしょう。 使い方は以下のようになります。 #include <iostream> #include <thread> #include <boost/lockfree/queue.hpp> boost::lockfree::queue<int> que(128); void producer() { for (int i = 0;; ++i) { while (!que.push(i)) {} } } void consumer() { for (;;) { int x = 0; if (que.pop(x)) { std::cout << x << std::endl; } } } int main() {

    Boost.Lockfree ロックフリーキュー - Faith and Brave - C++で遊ぼう
  • なぜ Haskell ではキューが軽んじられているか? - あどけない話

    Haskell ではキューが欲しくなったら Data.Sequence を使えと言われる。Seq は両端キューだし、シーケンスとして使えば、連結(><)や分割(splitAt)が、ならし計算量で O(log N) という優れものである。しかし、内部がfinger treeなのでコードが複雑なのと、計算量が「ならし」なところが玉に傷である。 もっと単純で、最悪計算量を保証する(両端でない)キューが標準で提供されてもいい気がする。その候補には、リアルタイムキューがある。どうして標準でキューが提供されないのだろう? 僕なりの答えは「需要がない」だ。 問題を解くときにスタックはよく使うが、キューが必要な問題はそんなに思いつかない。僕はネットワーク屋なので、もちろんルータにはキューが必要なことは知っているが、それ以外で有名どころと言えば幅優先探索ぐらいだ。 幅優先探索 でも、Haskellではキュー

    なぜ Haskell ではキューが軽んじられているか? - あどけない話
  • 1