Ruby는 단일 스레드입니까?

MD Aminul Islam 2023년6월21일
  1. 스레딩이란?
  2. Ruby는 단일 스레드입니까 아니면 다중 스레드입니까?
  3. Ruby 멀티스레딩 프로그램의 예
Ruby는 단일 스레드입니까?

멀티스레딩은 최신 프로그래밍 언어에서 중요한 주제입니다. 그러나 다른 목적을 위해서는 단일 스레드에서 프로그램을 실행해야 합니다.

이 기사에서는 몇 가지 예 및 설명과 함께 Ruby의 스레딩에 대해 설명합니다.

스레딩이란?

스레드는 CPU에서 순차적으로 실행되는 코드 및 명령 블록입니다. CPU에서 실행되는 가벼운 프로세스입니다.

프로그램에 여러 스레드가 있는 경우 변수 및 메서드와 같은 동일한 리소스를 공유할 수 있습니다. 스레딩은 CPU를 효율적으로 사용하고 더 빠른 실행을 제공합니다.

Ruby는 단일 스레드입니까 아니면 다중 스레드입니까?

예, Ruby는 멀티스레딩을 지원합니다. CPU를 효율적으로 사용하기 위해 둘 이상의 부분(스레드)의 동시 프로그래밍을 만들 수 있습니다.

단일 스레드로 Ruby에서 프로그래밍하는 경우 CPU의 한 코어를 통해 실행되므로 CPU가 쿼드 코어인 경우 다른 세 개의 코어는 프로그램 실행에 관여하지 않습니다.

따라서 스레딩이나 단일 스레드가 없는 프로그램은 다중 스레드 프로그램보다 느립니다. 이것이 현대 프로그래밍에서 단일 스레드 프로그램이 권장되지 않는 이유입니다.

게다가 웹 애플리케이션은 둘 이상의 작업을 동시에 수행합니다. 따라서 단일 스레드를 사용하여 웹 애플리케이션을 설계하는 것은 매우 어렵습니다.

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 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