タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

ConditionVariableに関するsonotsのブックマーク (2)

  • Ruby の Monitor と ConditionVariable の使い方 - Mame the hack

    Ruby の Monitor と ConditionVariable の使い方 なかなかぐぐっても日語の資料が見つからなかったので自分で動かしてみた。(ぐぐる能力低い) まずThreadの直列化 require "thread" require "monitor" moni = Monitor.new val = 0 Thread.new { 3.times { puts "thread1 start: #{val}" val+=1 sleep 0.1 puts "thread1 end: #{val}" } } Thread.new { 3.times { puts "thread2 start: #{val}" val+=1 sleep 0.1 puts "thread2 end: #{val}" } } sleep 結果は以下の通り。 start > end, start > en

    Ruby の Monitor と ConditionVariable の使い方 - Mame the hack
  • 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

  • 1