タグ

threadに関するudzuraのブックマーク (9)

  • https://github.com/mattn/mruby-thread/blob/f0595da2c0ba093760b85d81a37509f7215df1ad/src/mrb_thread.c

    udzura
    udzura 2017/09/22
    memo
  • Linux におけるスレッド数の上限 | yunabe.jp

    並行 (Concurrent) 処理を実装する方法としてスレッドは非常に強力なツールです。 スレッドを使えば同時に1つの処理しか行えない既存のプログラムに大きな修正を加えることなく、 並行処理を実装することが可能です。 またイベントとコールバックを複雑に組み合わせた非同期的なプログラムに比べて、 同期的なプログラム (例えばファイルの読み込みにコールバックが出てきたりしない普通のプログラム)は プログラムの流れを自然に書くことができ、 可読性・保守性・テスト、デバッグのしやすさの面で遥かに優れています。 スレッドを使うとプログラムをそれほど複雑・難読化にせずに並行処理が実装できます。 一方でスレッドを使った並行処理には欠点もあります。 欠点の1つは、スレッドモデルでは1つの処理に対して1つのスレッドを用意するので、 システムのスレッド数の上限で同時に行える処理の数が決まってしまう点です。

  • The Deadlock Empire

    This is the toolbar. | Select level: Start | Go To Main Menu | Clear Saved Progress

    The Deadlock Empire
    udzura
    udzura 2016/02/13
    めちゃええやん
  • Thread Safe な汎用オブジェクトCache - がくぞーのメモ

    DB負荷を減らしたいのでマスタテーブルはキャッシュして下さい><」だとか 「ファイルIOは重いのでテンプレートはキャッシュして下さい><」だとか 割と良く言われたりします。 オブジェクトのキャッシュは手軽な高速化の手段だと思われているようですが、並列性に気を使う必要性があったり、キャッシュされたオブジェクトを使用する側でも注意深く扱う必要が発生したりと、何かと不具合の温床になるので、大抵の場合なるべく別の方法を提案します。 それでも最終的にキャッシュした方がいい、という結論になるときもままあるので、Thread Safe で汎用的なCacheクラスを作成しました。 import java.util.concurrent.Callable; import java.util.concurrent.CancellationException; import java.util.concurr

    Thread Safe な汎用オブジェクトCache - がくぞーのメモ
    udzura
    udzura 2013/05/31
    josevalim が言っていたAtomicReferenceのジャバの例っぽい
  • https://github.com/basho/innertube/blob/master/lib/innertube.rb

    udzura
    udzura 2013/02/19
    勉強になりそうなコードだな
  • Rubyを用いたマルチスレッド対応Queueの作り方 - M-Tea

    はじめに マルチスレッドとキューについていろいろ書いてきている。とりあえず今回は、Rubyでマルチスレッド対応なQueueを考えてみる。 いろいろなご意見 皆様からいろいろなご意見を頂いたので、記載しておく ・キューの上限が必要なケースがよくわからなかった ・ディープクローンが発生するとパフォーマンスが悪くなる ・lock-freeなアルゴリズムがあるのでは これらについては、今後また書きたい rubyのマルチスレッド対応キュー Rubyでマルチスレッド対応Queueが欲しければ、以下のようにすればいい。 require 'thread' q = Queue.new q.enq( '123' ) q.deq() 既にクラスがあるので、それを利用すればいい... 自分で作る いや、あえて作る必要がないのであるが、作ってみる require 'thread' class MyQueue def

  • class Thread (Ruby 1.9.3)

    クラスの継承リスト: Thread < Object < Kernel < BasicObject 要約 スレッドを表すクラスです。スレッドとはメモリ空間を共有して同時に実行される制御の流れです。 Thread を使うことで並行プログラミングが可能になります。 実装 ネイティブスレッドを用いて実装されていますが、 現在の実装では Ruby VM は Giant VM lock (GVL) を有しており、同時に実行される ネイティブスレッドは常にひとつです。 ただし、IO 関連のブロックする可能性があるシステムコールを行う場合には GVL を解放します。その場合にはスレッドは同時に実行され得ます。 また拡張ライブラリから GVL を操作できるので、複数のスレッドを 同時に実行するような拡張ライブラリは作成可能です。 スケジューリング Ruby のスレッドスケジューリングはネイティブスレッドの

    udzura
    udzura 2012/06/05
    これか、知らねえ……
  • @blog should be nil: Thread-Local Storage in Ruby

    2012年1月20日金曜日 Thread-Local Storage in Ruby スレッド毎に局所的に固有のデータ領域を与える方法としてスレッド局所領域というものがある。http://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E5%B1%80%E6%89%80%E8%A8%98%E6%86%B6まあおおまかなメリットはwikipediaなんかを参考にしていただきたいのだが、記憶領域としてはメモリよりL1/L2キャッシュのほうがはやいし、レジスタはさらにはやい。なので複数スレッド間で共有する必要がない資源はL1/L2キャッシュにのってくれたほうがいいよね、という話だ(多分)。Rubyのスレッドは1.9からOSのネイティブスレッドと1:1対応になったので、POSIXスレッドとかの実装と対応、といったことが可能なわけ

    udzura
    udzura 2012/01/20
    レジスタにデータを記憶させるのカッコいい…
  • 逆引きRuby – www.namaraii.com – Index of TAKEUCHI, Hitoshi

    逆引きRubyRubyを使ってやりたい事から、その方法を調べられる逆引きのリファレンスです。 逆引きRubyはもともとWikiで運用していました。このため、サイトのコンテンツは私以外の多くの方によって作成・編集されたものです。 2017年に静的HTML(jekyll)の管理へ移行しましたが、2018年10月からScrapboxへ移行しました。どなたでも編集いただけますので、ご協力いただける方はよろしくお願いします。 逆引きRuby (https://scrapbox.io/rubytips/逆引きRuby)

    udzura
    udzura 2011/08/23
    [for:@twitter]スレッド間の競合を回避する(Mutex)
  • 1