タグ

2018年2月11日のブックマーク (4件)

  • マルチスレッド/プロセスまとめ(Ruby編) - Qiita

    プログラムの実行単位 固有のメモリ空間を持つ(リソースを共有しない) マルチプロセスの場合、物理/仮想メモリ領域間のアドレス解決のオーバーヘッドが高い。 プロセスの実行単位 共通のメモリ空間を持つ(リソースを共有する) マルチスレッドの場合、物理/仮想メモリ領域間のアドレス解決は発生しない。 ユーザースレッド ユーザー空間(アプリケーションが利用するメモリ空間)を利用 1つのプロセスに複数のスレッドがあっても、1つのスレッドしか実行されない。 OSカーネルを介さないスレッド切り替えのため、スレッド切り替えに伴うオーバーヘッドが少ない。 仮想VM上で実行されるスレッドをグリーンスレッドと呼ぶ。 カーネルスレッド カーネル空間(カーネルが利用するメモリ空間)を利用 1つのプロセスに複数のスレッドがある場合、同時に複数(CPUコア数分)のスレッドを実行できる。 OSカーネルを介するスレッド切り替

    マルチスレッド/プロセスまとめ(Ruby編) - Qiita
    inouetakuya
    inouetakuya 2018/02/11
    分かりやすいまとめ
  • ruby の並行・並列ってどんな感じなのかな、とか。 - 偏見プログラマの語り!

    ユーザーストリームに接続して、タイムラインに流れる呟きを逐次取得するような関数 each_post() を作りました。中の実装はともかくとして↓こんな感じで使います。 each_post() {|st| if st['text'] then puts st['text'] # 呟きを表示 end } で、これを使って ruby の並列・並行処理*1とか、ちょっと触ってみようかなと。というわけで「5 秒に一度、直近の 5 秒間に発生した呟きを表示する」プログラムを書いていました。 1. スレッド まぁとにかく最初は標準の Thread を使ってみましょということで。 スレッド 2 作ります。ひとつは呟き収集スレッド、もうひとつは呟き表示スレッドです。 require 'thread' q = Queue.new collect_tw_t = Thread.new do each_post(

    ruby の並行・並列ってどんな感じなのかな、とか。 - 偏見プログラマの語り!
  • Rubyのスレッドで並列化するのに向いている処理を調べてみる - ユニファ開発者ブログ

    こんにちは、夏に向けて腹筋強化中のWebエンジニア間です。 はじめに、この開発者ブログを開設してから、半年が経過しました🎉 気づけばエントリー数も20を超え、開発者ブログっぽくなってきなーと感じております。 この勢いを続けていけるよう、会社としても個人としてもこれからも頑張っていく所存です。 話は変わりまして、今回のブログでは「Rubyのスレッドで並列化するのに向いている処理」を簡単に調べたので、メモがわりに残しておこうと思います。 調査を実施した理由として、バックグラウンドジョブを動かすGemの1つに sidekiq という有名なGemがあります。 このsidekiqの特徴の1つに「マルチスレッドで動作する」というものがあります。 一方、MRI(CRuby)にはGVL(Global VM Lock)、またはGIL(Global Interpreter Lock)と呼ばれる排他制御の

    Rubyのスレッドで並列化するのに向いている処理を調べてみる - ユニファ開発者ブログ
    inouetakuya
    inouetakuya 2018/02/11
    うおおお、この情報を探していました!自分でやる手間が省けたー
  • Rubyで並列処理をやっていく #AdventCalendar - ainameの日記

    mixiグループアドベントカレンダー2016 1日目です。 今回は、自分が今まで利用したRubyでの並列処理を書くためのgemとか知見を紹介します。 機運 先日のRubyKaigi 2016で、Ruby3ではGuildという新しい並列処理のモデル*1が、導入されるというセッションがあったり、concurrent-rubyというgemの開発が流行り初めて居たりと、Ruby界隈でも何となく並列処理がブームきているように感じます。 マルチプロセス/スレッド しかしRubyで並列処理するのは言語の仕様としてそれなりに制限があり、他の言語のようにThreadをバンバン立ててマルチコアで計算!爆速化!!みたいなのは難しいです。 というのも、Ruby1.9からネイティブスレッドは導入されたものの多くのC拡張を使ったgemのスレッドセーフ性が問題となるため、GIL(Global interpreter l

    Rubyで並列処理をやっていく #AdventCalendar - ainameの日記
    inouetakuya
    inouetakuya 2018/02/11
    ものすごくよくまとまっていて感動した