Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * async multi threading with c++
- * flag : -pthread -std=c++0x
- */
- #include <iostream> // std::cout
- #include <unistd.h> // sleep();
- #include <future> // std::async
- class MyClass {
- public:
- auto doStuffSoLong()->int
- {
- sleep(7);
- std::cout << "1" << std::endl << std::flush; //dont buffer
- return 0;
- }
- auto doAnotherStuff()->int
- {
- std::cout << "2" << std::endl << std::flush; //dont buffer
- return 0;
- }
- auto doAnotherLongStuff(const std::string ¶m)->int
- {
- sleep(3);
- std::cout << "3" << std::endl << std::flush; //dont buffer
- return 0;
- }
- };
- int main()
- {
- sleep(3); // give a time to open task manager
- MyClass app;
- auto thread1 = std::async(std::launch::async, &MyClass::doStuffSoLong, &app);
- auto thread2 = std::async(std::launch::async, &MyClass::doAnotherStuff, &app);
- auto thread3 = std::async(std::launch::async, &MyClass::doAnotherLongStuff, &app, "hello world");
- if(thread1.get() == 0) std::cout << "thread 1 succes" << std::endl;
- if(thread2.get() == 0) std::cout << "thread 2 succes" << std::endl;
- if(thread3.get() == 0) std::cout << "thread 3 succes" << std::endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement