본문 바로가기
공부하며놀자/프로그래밍

[프로그래밍][C++11] thread, future, promises, async

by 테너토너 2016. 8. 24.

thread로 돌려야할 함수가 있어서 검색해봤다.

C++11 (VS 2012)부터는 std::thread가 있길래, VS2012로 갈아탔다..

좋은게 좋은거라고ㅋㅋ


그리고 사용 법을 검색해보니 간단하다.

아래 링크에서 잘 설명해준다. 동영상 강의다.

https://www.youtube.com/watch?v=o0pCft99K74&list=PL1835A90FC78FF8BE&index=4


난 thread해서 join할 필요 없이 async를 사용하면 될것 같다.


#include <thread>

#include <iostream>

#include <functional>

#include <string>

#include <future>




std::string func()

{

for(int i=0; i< 20; i++)

{


std::cout<<"numbering from func() "<< i << std::endl;

_sleep(200);

}

std::string strRet = "yes";

return strRet;

}


int main()

{

auto ftr = std::async(&func);  //future를 include해야 std::async 사용 가능. 

                                       //type을 auto로 알아서 받겠다는 뜻.

                                       //async를 쓰면 비록 불린 함수가 끝나지 않아도 main을 끝내는데 문제 없음


for(int i=0; i< 3; i++)

{

std::cout<<"NUMBERING FROM MAIN "<< i << std::endl;

_sleep(300);

}

std::string str = ftr.get(); //return 값을 받으려고 여기서 대기 하게됨. 끝났는지 중요하지 않을 때는 그냥 

                                        // ftr.get()을 없애면 바로 main이 종료됨.

        std::cout<<"completed strRet :"<<str<<std::endl;

//std::cout<<"completed XXXX"<<std::endl;

getchar();

}



반응형

댓글