Replies: 1 comment
-
동기와 비동기의 개념동기(Synchronous)
비동기(Asynchoronomous)
언제 동기와 비동기가 중요한가요?
Swift에서의 동기와 비동기동기
func sayHello() {
print("Hello")
}
func sayName(_ name: String) {
print("\(name)!!")
}
func sayGoodbye() {
print("Have a good day! :)")
}
sayHello()
sayName("Austin")
sayGoodbye()
/*
Hello
Austin!!
Have a good day! :)
*/ 비동기
참고 |
Beta Was this translation helpful? Give feedback.
-
며칠전에 개발을 하다보면 async - await 를 분명 많이 쓰는데 뭔지모르고 그냥 쓰고 있어서 혹시 설명해줄 수 있는지 질문을 받았습니다. 사실 여전히 관련해서 봐야할 것이 너무 많고 설명해줄만큼 정확히는 모르지만
sync, async, await 개념만 조금 이야기 해보려고합니다!
sync 와 async가 무엇일까?
-> sync(동기) / async (비동기) 는 프로세스의 작업 순서 보장에 대한 개념입니다.
동기(Synchronous)
비동기(Asynchronous)
비동기 처리는 결과를 즉시 받을 필요가 없거나 오래걸리는 작업을 위해 사용됩니다.
햄버거 가게를 예로 들어 보겠습니다. 손님이 햄버거를 주문하면
sync(동기) 는 햄버거가 완성되었는지 계속 물어보면서 순서대로 대기합니다.
async(비동기) 는 햄버거가 완성되었는지 신경쓰지 않고 있다가 진동벨이 울리면 전달받습니다.
await
await는 async(비동기) 함수를 sync(동기)처럼 쓸 수 있도록 해줍니다.
그리고 await는 async 함수 안에서만 동작하기 때문에 async 함수 내부에서만 사용해야 합니다. 그래서 await를 사용해야 한다면 await를 감싸는 함수에 async를 넣어 주어야 합니다.
아래처럼 async throws, try await의 형태로 함께 사용하는 것을 많이 볼 수 있는데 throws - try는 에러 반환을 위해 필요합니다.
결론적으로 함수들의 실행순서가 중요하거나, 해당 함수의 실행 결과값이 중요한데 비동기(async)인 경우에 await을 함께 써주어서 처리완료를 기다렸다가 결과값을 얻도록 합니다.
또한 async await는 비동기 함수를 동기처럼 쓸 수 있도록하지만 동기처럼 작업이 완료되어야만 쓰레드를 반환하는 것이 아니라 시스템에게 제어권을 맡겨서 작업 상황에 따라 비동기함수를 일시 중단 할 수 있도록 합니다. 또한 이 일시 중단될 수 있는 위치를 지정하기위해 await 키워드를 사용합니다.
혹시 관련해서 수정이 필요하거나 첨언해줄 것이 있으시다면 달아주시면 너무너무 감사하겠습니다
Beta Was this translation helpful? Give feedback.
All reactions