• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

19_5_1~100까지의 합 구하기 질문

19.06.16 21:26 작성 조회수 278

1

선생님께서, 강의중에 쓰레드 두개가 각각 1~50, 51~100까지 더하는 걸 해보라고 하셨었는데.

저는 아래와 같이 만들어 봤습니다. 

https://pastebin.com/nftTHgmd

 

여기서 54~55번 줄의 아래 코드를 수행 시

std::async(sum_a_to_b, 1, 50);
std::async(sum_a_to_b, 51, 100);

결과는 잘 나오는데, 이런 경고창이 함께 뜨더라구요.

warning C4834:  'nodiscard' 특성이 포함된 함수의 반환 값을 버리는 중

 

아무래도 선생님께서 영망 마지막에 말씀하신,

async 는 퓨처와 연결해주지 않으면 시퀀셜하게 실행된다라는 점 때문인 것 같습니다.

그래서 auto로 선언을 해서 퓨처와 연결을 해줬더니이번에는 cout 출력이 제대로 되지 않더라구요...!

 

왜 그런 건지 알 수 있을까요?

 

 

답변 1

답변을 작성해보세요.

0

* '잘 안되는 경우'의 코드도 같이 넣어주세요.

future연결해보셨다는 부분의 코드가 빠져서 어떻게 하셨는지는 정확히 알 수가 없습니다만 제가 추측하기에는 future의 get()을 빠뜨리신 것 같습니다. sumatob  함수를 (의도적으로) 반환값이 없는 형태로 만드신 것 같은데 ... 까지만 말씀드리겠습니다. lock걸면 느린데도 일부러 실험해보려고 구현하신 것 같으니 강의 내용은 다 이해하신 것으로 보입니다.