Ruby シングルスレッドか

MD Aminul Islam 2023年6月21日
  1. スレッディングとは
  2. Ruby はシングルスレッドかマルチスレッドか
  3. Ruby マルチスレッド プログラムの例
Ruby シングルスレッドか

マルチスレッドは、現代のプログラミング言語における重要なトピックです。 しかし、他の目的のためにプログラムを単一のスレッドで実行する必要があります。

この記事では、いくつかの例と説明とともに、Ruby でのスレッド化について説明します。

スレッディングとは

スレッドは、CPU 上で順次実行されるコードとコマンドのブロックです。 これは、CPU 上で実行される軽量のプロセスです。

プログラムに複数のスレッドが存在する場合、変数やメソッドなどの同じリソースを共有できます。 スレッド化により、CPU が効率的に使用され、実行が高速化されます。

Ruby はシングルスレッドかマルチスレッドか

はい、Ruby はマルチスレッドをサポートしています。 CPUを効率的に使用するために、2つ以上の部分(スレッド)の並行プログラミングを作成できます。

シングル スレッドで Ruby をプログラミングすると、CPU の 1つのコアで実行されるため、CPU がクアッド コアの場合、他の 3つのコアはプログラムの実行に関与しません。

そのため、スレッド化されていないプログラムやシングル スレッドのプログラムは、マルチスレッド プログラムよりも遅くなります。 そのため、最新のプログラミングではシングル スレッド プログラムは推奨されません。

また、Web アプリケーションは複数のタスクを同時に実行します。 そのため、単一のスレッドを使用して Web アプリケーションを設計することは非常に困難です。

Ruby マルチスレッド プログラムの例

以下の例では、Ruby プログラムでマルチスレッドを使用する方法を示します。 以下のサンプルコードを見てください。

def ThreadOne
   a = 0
   while a <= 3
      puts "Thread One"
      # Pause the execution
      sleep(1)
      # incrementing the value of b
      a = a + 1
   end
end

def ThreadTwo
   b = 0
   while b <= 3
       puts "Thread Two"
      # Pause the execution
      sleep(1)
      # incrementing the value of b
      b = b + 1
   end

end

# Creating thread with "ThreadOne()"
t1 = Thread.new{ThreadOne()}

# Creating thread with "ThreadTwo()"
t2= Thread.new{ThreadTwo()}

# wait until the first thread complete
t1.join

# wait until the second thread complete
t2.join

  puts "Process execution has been done!!!"

各行の目的はすでにコメントとして残されています。 上記の Ruby プログラムを実行すると、コンソールに以下の出力が表示されます。

Thread One
Thread Two
Thread One
Thread Two
Thread One
Thread Two
Thread One
Thread Two
Process execution has been done!!!
著者: MD Aminul Islam
MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn