inflearn logo
강의

Khóa học

Chia sẻ kiến thức

[Tìm hiểu qua hình ảnh] Hiểu biết trực quan nhất về các khái niệm đồng bộ (sync) và không đồng bộ (async)

Hiểu khái niệm đồng bộ và không đồng bộ.

비동기함수에 콜백함수는 어느 스레드에서 실행되나요?

976

lolola

19 câu hỏi đã được viết

1

쓰레드 1에서 B,C,D

스레드2에서 비동기함수 A 를 실행하고있습니다

스레드2에 비동기함수 A가 완료되서 A의 콜백함수 A'가 실행되는데 이거는 스레드1으로 돌아와서 실행되나요 아니면 스레드2에서 실행되나요?

스레드1에서 실행되면 스레드2에서 온 콜백함수가 스레드1에서 진행중인 작업들보다 먼저실행되나요?
ex)
스레드1: B,C,(스레드2에서 A완료, A'가 스레드1으로돌아옴), A'실행,D실행

async sync

Câu trả lời 1

4

allen

안녕하세요 lolola님 !

좋은 질문 감사합니다 :)

기본적으로 A' 콜백함수는 스레드2에서 실행된다고 생각하시면 됩니다. (비동기함수 A를 스레드 2로 보냈고, 콜백함수는 결국에 A작업의 끝에 붙어있는 작업처럼 동작합니다. 콜백이라는 이름에서도 알 수 있듯이, call을 back하는.. 다시말하면 A라는 작업후에 어떤 결과로 해당 함수를 다시 실행하는 것이니 기본적으로는 스레드2에서 동작합니다.)

그런데 여기서.. (언어마다 조금씩 좀 다르겠지만..)

A' 콜백함수를 다시 스레드1로 보내는 방법들이 존재합니다. (스레드1에서 실행해야하는 이유가 있을 경우, 보통은 다시 내부에서 해당 콜백함수를 스레드1로 보내는 처리를 해줍니다.)

그리고 마지막 

==========================================

스레드1에서 실행되면 스레드2에서 온 콜백함수가 스레드1에서 진행중인 작업들보다 먼저실행되나요?
ex)
스레드1: B,C,(스레드2에서 A완료, A'가 스레드1으로돌아옴), A'실행,D실행

==========================================

이 부분에 대해서 말씀을 드리자면, 개발자는 그 순간을 정확히 알 수없습니다. (여러가지로 코드로 실험해 보시면 그때그때 마다 다르게 나옵니다..)

아마 그런 의도로 작성하신 것 같은데.. B작업이 끝나는 순간에 스레드1로 돌아오면 B작업 다음에 실행될 수도 있고, C작업이 끝나는 순간에 스레드1로 돌아도면 C작업 다음에 시작 될 것입니다. 만약에 작업 B,C,D가 비동기작업A에 비해 상대적으로 아주 짧은 작업이라고 치면 B,C,D뒤에 실행될 수도 있겠죠.

이정도면 답변이 될 것 같은데.. 혹시 더 궁금한 점이 있으시면 다시 질문주세요!

감사합니다. :)

async pending상태의 promise객체

1

151

2

spring sync connection reset

0

376

3

RuntimeWarning: Enable tracemalloc to get the object allocation traceback

0

1709

1

EF사용시 async사용

0

257

1

async return 자료형이 Promise인 설징에 대한 질문

0

704

2

섹션 15 동기와 비동기의 개념 질문있습니다

0

432

1

비동기 프로그래밍 관련 질문입니다.

1

674

1

Django Unit Test에서 Async Task 시 Default DB 사용 이슈

1

412

1

Dart의 비동기 함수에 대한 aysnc, await 질문입니다.

1

812

2

build.gradle에서 implementation 'gun0912.ted:tedpermission:2.2.3' sync가 되지 않아요...

0

3908

2

안녕하세요 선생님!! 장고 엑셀다운로드 로딩에 대하여 질문드립니다

0

579

1

함수를 async를 사용하여 비동기로 작성한 이유가 궁금합니다.

2

335

0

await 원리 질문 드립니다

2

348

1

큐로 sync하게 호출하는 이유가 궁금합니다

2

264

1

비동기 방식에 대해 질문올려봅니다.

1

248

1

비동기 API 호출 질문드립니다.

0

220

1

async await 질문드립니다!

1

330

1

createBlog가 await하는 동안

3

306

3

async와 blocking

2

530

1