반응형
동기와 비동기의 차이는 간단하게 동기는 맡은 일을 끝내고 다음일을 시작하며, 비동기는 응답여부에 상관없이 다음일을 시작합니다.
✔️동기 (Synchronous) 프로그래밍이란?
동기 프로그래밍은 작업이 순차적으로 실행되는 방식입니다. 간단히 말하면, 한 작업이 시작되고 완료될 때까지 다음 작업이 대기하는 방식입니다. 이것은 일반적으로 우리가 일상적으로 하는 작업과 유사합니다. 예를 들어, 요리를 할 때, 각 단계가 다음 단계를 기다리는 것과 같습니다.
💡동기 (Synchronous) 프로그래밍 특징
- 순차적 실행: 작업들은 순서대로 실행되며, 한 작업이 완료되기 전에 다음 작업은 시작되지 않습니다.
- 직관적: 코드가 순차적이므로 이해하기 쉽고 디버깅하기도 상대적으로 쉽습니다.
- 블로킹: 한 작업이 다른 작업을 대기하게 되면 이를 "블로킹"이라고 합니다. 이는 성능 저하를 일으킬 수 있습니다.
동기 프로그래밍은 간단하고 직관적이지만, 작업이 오래 걸리는 경우에는 전체 애플리케이션 성능에 부정적인 영향을 미칠 수 있습니다.
✔️비동기 (Asynchronous) 프로그래밍이란?
비동기 프로그래밍은 작업이 동시에 여러 개 실행될 수 있고, 한 작업이 완료되기를 기다리지 않고 다른 작업을 계속할 수 있는 방식입니다. 이는 주로 네트워크 요청, 파일 I/O, 이벤트 처리와 같이 시간이 오래 걸리는 작업을 다룰 때 유용합니다.
💡비동기 (Asynchronous) 프로그래밍 특징
- 동시성: 여러 작업이 동시에 실행될 수 있으므로 성능 향상이 가능합니다.
- 비동기 콜백: 비동기 작업이 완료되면 콜백 함수를 호출하여 결과를 처리합니다.
- 논 블로킹: 다른 작업을 대기하지 않고 계속해서 다음 작업을 수행합니다.
비동기 프로그래밍은 성능 면에서 이점을 제공할 수 있지만, 코드가 복잡해질 수 있고 콜백 지옥(callback hell)과 같은 문제가 발생할 수 있습니다. 이러한 문제를 해결하기 위해 Promises, async/await와 같은 도구가 도입되었습니다.
✔️Promises와 async/await
Promises와 async/await는 비동기 코드를 관리하고 더 읽기 쉽게 만드는 도구입니다. Promises는 비동기 작업의 결과를 나타내며, async/await는 비동기 코드를 동기식처럼 작성할 수 있게 도와줍니다. 아래는 간단한 예제입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
// Promise 사용 예제
function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("데이터가 도착했습니다.");
}, 2000);
});
}
fetchData()
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});
// async/await 사용 예제
async function fetchDataAsync() {
try {
const data = await fetchData();
console.log(data);
} catch (error) {
console.error(error);
}
}
fetchDataAsync();
|
cs |
반응형
'CS' 카테고리의 다른 글
[CS]Get방식과 Post방식 (0) | 2023.09.22 |
---|---|
[CS] 웹 서버(Web Server)와 웹 애플리케이션 서버(Web Application Server, WAS) (0) | 2023.09.18 |
프레임워크(Framework) vs 라이브러리(Library) (0) | 2023.09.16 |
[CS] 오버라이딩(Overriding)과 오버로딩(Overloading) (0) | 2023.09.15 |
[CS] MSA(Micro Service Architecture) (0) | 2023.09.11 |