Skip to Content
Suffering builds character
아카이브13.프로세스,스레드특징프로세스와 스레드10. 프로세스를 추가 생성하여 개선, Multi Process

10. 프로세스를 추가 생성하여 개선, Multi Process

methodA()의 작업과 methodB()의 작업이 서로 관련이 없기 때문에 독립적으로 실행되어도 된다면?

코어가 2개라고 가정할 경우, 하나의 프로세스를 더 생성하여 개선할 수 있음 각각의 코어별로 분리된 프로세스들을 실행시켜서 속도를 줄여보는 것

1. 프로그램 코드를 2개의 프로세스로 실행할 수 있도록 코드를 분할

프로그램 코드를 분할, methodA()methodB()가 각각 서로 다른 프로세스에서 실행되도록 함

  1. methodA()만을 실행하기 위한 별도의 프로세스 A 생성
void main() { int resultA = methodA(); // 3분의 연산 시간 소요 // ... }
  1. methodB()만을 실행하기 위한 별도의 프로세스 B 생성
void main() { int resultB = methodB(); // 4분의 연산 시간 소요 }
  1. methodB()의 연산 결과값을 프로세스 A에게 전달 프로세스 간 통신(Inter Process Communication) 기술을 활용하여 프로세스 A에게 methodB()restultB 값을 전달
void main() { int resultB = methodB(); // 4분의 연산 시간 소요 // 프로세스 A에게 실행 결과 전달 로직 }
  1. 프로세스 A는 methodA()의 값과 methodB()의 값을 합산하여 결과값 출력
void main() { int resultA = methodA(); // 3분의 연산 시간 소요 // 프로세스 B에게 결과값을 전달 받음 System.out.println(resultA + resultB); }

결과적으로 2개의 코어에서 각각 프로세스 A, B가 실행되면서 실행 시간을 약 4분으로 단축시킬 수 있음

💡
Tip

프로세스 간 통신(IPC, Inter Process Communication)

하나의 시스템 내에서 실행 중인 여러 프로세스가 데이터를 주고받으며 협력할 수 있도록 하는 메커니즘

적용 방법은 메시지 큐와 같은 미들웨어를 활용하거나 소켓 통신 등을 통해 구현할 수 있음

Last updated on