• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

21분15초 부분

22.08.02 15:56 작성 조회수 231

0

다른 함수가 있으면 실행한다고 설명해주시는데

void main() async {
  Future<String> name = Future.value("dnb");
  Future<int> number = Future.value(1);

  await addNumbers(1,1);
  await addNumbers(2,2);
  hello();
}

Future<void> addNumbers(int num1, int num2) async {
  print("계산 시작 : $num1 + $num2");
  
  //서버 시뮬레이션
  await Future.delayed(Duration(seconds: 2), (){
    print("계산 완료 $num1 + $num2 = ${num1+num2}");
  });
  
  print("함수 완료");
}

void hello() {
  print("hello");
}

 

이렇게 하면 다 기다린다음 hello 출력하는데

설명해주시는건 무엇을 의미하나요 다 기다린다음 hello출력하는건 맞는건 알겠는데  다른함수가있으면 실행가능하다고,,,

이런 경우엔 놀고있는 thread는 어디서 사용하는건가요

답변 2

·

답변을 작성해보세요.

0

Junghyun Kim님의 프로필

Junghyun Kim

2022.09.30

await가 기다리는 scope는 해당 await가 사용된 async 함수 내에서 한정이에요.

해당 코드에서는 main 함수에 async를 걸어서 await했기 때문에, thread가 idle 한 상태에서 각 await마다 놀고있는 상태로 있을 뿐이에요.

void realMain() {
  main();
  otherFunction();
}

만약 위 구현처럼 main 함수도 다른곳에서 호출되었다면, thread는 otherFunction을 실행하게 됩니다.

물론, main에서 await를 거는 구현은 사실상 '나는 thread를 놀게 할거야' 라고 선언하는거랑 같은 맥락이에요.

0

안녕하세요!

실전 상황에는 여러 기능이 동시에 실행됩니다. 간단히 풀어보면 사용자가 여러 버튼을 연속적으로 누르는 상황이 되겠습니다!

하나의 버튼을 누를때마다 응답을 처리하는데 10초가 걸린다면 버튼 10개를 연속적으로 눌렀을때 실행 완료까지 100초가 걸립니다. 하지만 async 상황에서는 10개를 1초만에 누른다면 11초안에 실행을 모두 마칠 수 있습니다!