10. 프로세스를 추가 생성하여 개선, Multi Process
methodA()의 작업과 methodB()의 작업이 서로 관련이 없기 때문에 독립적으로 실행되어도 된다면?
코어가 2개라고 가정할 경우, 하나의 프로세스를 더 생성하여 개선할 수 있음 각각의 코어별로 분리된 프로세스들을 실행시켜서 속도를 줄여보는 것
1. 프로그램 코드를 2개의 프로세스로 실행할 수 있도록 코드를 분할
프로그램 코드를 분할, methodA()와 methodB()가 각각 서로 다른 프로세스에서 실행되도록 함
methodA()만을 실행하기 위한 별도의 프로세스 A 생성
void main() {
int resultA = methodA(); // 3분의 연산 시간 소요
// ...
}methodB()만을 실행하기 위한 별도의 프로세스 B 생성
void main() {
int resultB = methodB(); // 4분의 연산 시간 소요
}methodB()의 연산 결과값을 프로세스 A에게 전달 프로세스 간 통신(Inter Process Communication) 기술을 활용하여 프로세스 A에게methodB()인restultB값을 전달
void main() {
int resultB = methodB(); // 4분의 연산 시간 소요
// 프로세스 A에게 실행 결과 전달 로직
}- 프로세스 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