タグ

threadに関するkyabのブックマーク (8)

  • mrubyにGVLを使ったmulti-threadingのsupportを追加する - crimsonwoodsのブログ

    前回mrubyのことを書いてから既に1年以上が経ち、非常にいまさら感はあるのですが、 mrubyにGVL実装版のmulti-threadingのsupportを追加してみました。 ソースコードは下記で公開しています。 crimsonwoods/mruby at implement_multithreading_support_with_GVL · GitHub ベースにしているのはmruby 1.1.0のtagで、 下記のような変更を加えています。 mrb_stateをmrb_vm_contextとmrb_thread_contextに分割 GVLの実装用にmutexAPIを追加 GVL用のAPIを追加 thread用のAPIを追加 atomic命令用のAPIを追加 threadのcontext-switch用にtimer threadを追加 Thread class実装用のmruby-

    mrubyにGVLを使ったmulti-threadingのsupportを追加する - crimsonwoodsのブログ
  • Microsoft PowerPoint - threads.ppt

    kyab
    kyab 2015/03/03
    "Too hard for most programmers to use." マルチスレッドプログラミングは難しい。の有名なPDF 「Why Threads Are A Bad Idea」
  • 並列処理のためのC++ライブラリ拡張 ~C++17: 並列STLの概要

    C++11の標準ライブラリ<thread>を使った並列化 大量のデータを分割し、複数のスレッドに分担させて処理時間を稼ぐことを考えます。スレッドに関わるAPIは、WindowsならCreateThreadやWaitForNltipleObjectなど、Linuxならpthread_xxxxと、OSによって異なるのですが、C++11では標準ライブラリ<thread>がOSごとの差異を吸収してくれているのが嬉しいところ。大量のデータを詰め込んだvectorを2つのスレッドでソートしてみます。 #include <iostream> // cout, endl #include <thread> // thread #include <algorithm> // inplace_merge, etc. #include <chrono> // clock, time_point, duratio

    並列処理のためのC++ライブラリ拡張 ~C++17: 並列STLの概要
    kyab
    kyab 2014/10/05
    純粋な計算の方の並列化
  • node.js と thread hog の話(3)

    [前回までの話へのリンク] ・node.js と thread hog の話(1) ・node.js と thread hog の話(2) では、なぜ今頃になって HTTP Server の c10k 問題(もしくは、thread hog 問題)が顕在化したのだろう。 当時(90年代の終わり頃)と比べて、もっとも大きく変わったのはCPUの性能である。クロック数は、数百MHzから数GHzへと一桁増えたし、マルチコア化もしている。CPU 性能だけ見れば、当時の数十倍の能力が出てしかるべきである。 しかし、実際の人生はそう簡単ではない。サーバーのパフォーマンスはCPU性能だけが決めるわけではないからだ。そこで、ボトルネックの一つとして注目されはじめたのが、thread の数なのである。 前回述べた様に、thread 一つあたり 2MB~8MB のスタック領域を仮想メモリ空間に確保しなければならな

    kyab
    kyab 2014/02/15
    “クロージャが多くの言語でサポートされるようになった今の時代、イベント駆動型のプログラミングを拒否する理由はあまりない
  • node.js と thread hog の話(2)

    [前回までの話へのリンク] ・node.js と thread hog の話(1) 最近になって「c10k 問題」が広く知られるようになったが、実際には、前回書いたように、thread を使いすぎるプログラム(thread hog なプログラム)はスケーラビリティが悪いということは、当時(90年代の終わりごろ)でもすでに「知る人は知る」問題になっていた。 複数のクライアントマシンとの間のソケットを開きっぱなしにしておく、Proxy Server、Chat Server、MMORPG に関わっている人達の間で、ソケット一つに thread を一つ割り当てるスタイルのプログラミングがスケーラビリティに欠けることが知られるようになったのもこのころである。 当時、Microsoft で MSN Messenger を作っている知り合いが「ついに1万人が同時接続しても大丈夫なアーキテクチャに到達した

    kyab
    kyab 2014/02/15
    スレッド多用より非同期APIがパフォーマンス良いよってのは定説って話。MSでスレッド多用を非同期にしてパフォーマンス改善。ただ非同期APIにアレルギー反応する人も多かった。
  • Celluloid: Actor-based Concurrent Objects for Ruby

    Painless multithreaded programming for RubyCelluloid is a concurrent object oriented programming framework for Ruby which lets you build multithreaded programs out of concurrent objects just as easily as you build sequential programs out of regular objects. Learn more Evented I/O for Celluloid actors. Build fast evented programs like you would with EventMachine or Node.js using regular synchronous

    kyab
    kyab 2014/02/13
    “Celluloid is a concurrent object oriented programming framework for Ruby”
  • Matz is not a threading guy

    Matz is not a threading guy Published on November 08, 2012 by Jesse Storimer I attended my very first Rubyconf last week. There were certainly some common themes that I kept hearing over and over again throughout the course of the conference. Among other things, there was JRuby, threading, the GVL, and MRI 2.0. We got to see a few talks about the new features in MRI 2.0. One of the oft-discussed f

    kyab
    kyab 2014/02/13
    2012年。並列処理 "Matz is not a threading guy" あと笹田さんがGVI取り除こうとしたけどシングルスレッド性能がめちゃ遅くなったという話。
  • Rubyでマルチスレッドプログラミング|TechRacho by BPS株式会社

    RubyはWeb界隈でよく使われてるスクリプト言語の中では比較的簡単に割と格的なマルチスレッドプログラムを書くことができます。 うまく使うとI/O待ちで遅くなっているが、必ずしも順番に行う必要のないプログラムの実行時間を短縮したりすることができます。(たくさんのURLにアクセスしてレスポンスを取得してくるクロウラーなど) しかし現在最も広く使われているRuby1.8ではスレッドの実装はいわゆるグリーンスレッドという実装で、OSによるスレッドを使えないため、マルチコアの恩恵を受けることができないので、大量のデータをマルチコアで処理する目的などで使っても効果が薄い(どころかまったくない)可能性が高いです。 Ruby1.9ではRubyでスレッドの動きを制御しているものの、ネイティブスレッドベースでの動作となっているため、マルチコアの恩恵を受けることができます。 それではさっそく、配列の各要素を

    Rubyでマルチスレッドプログラミング|TechRacho by BPS株式会社
    kyab
    kyab 2014/02/13
    んーこれダウトかな。sleepなかったらGVLのせいで逆に遅いはず。sleepの中では一時的にGVLはアンロックされるから早くなるけど、sleepの合計時間を分散しただけ。
  • 1