#include <iostream>
#include <thread>
#include <future>
#include <string>
using namespace std;
class Student;
class Student{
public:
Student(){};
Student(string name,uint32_t id);
~Student(){};
void setName(string name){
Name = name;
};
void setID(uint32_t id){
ID = id;
};
void printStuNameID(Student &student){
cout<<student.Name<<" -- "<<student.ID << endl;
}; //本函数纯属废话
void printStuNameID(){
cout<<Name<<" -- "<<ID << endl;
};
private:
string Name;
uint32_t ID;
};
Student::Student(string name,uint32_t id){
Name = name;
ID = id;
};
void MessageChange(future<Student> &fut1 , promise<Student> &pro2){
Student tempStu = fut1.get();
pro2.set_value(tempStu);
};
void MessagePrint(future<Student> &fut1){
Student tempStu = fut1.get();
tempStu.printStuNameID();
};
int main(){
string tempName= "wangshuo";
uint32_t tempID = 678;
Student stu1(tempName, tempID);
stu1.printStuNameID(); //打印stu1的信息;
//在另一个线程里完成stu2对stu1信息的拷贝;
Student stu2;
promise<Student> pro1,pro2;
pro1.set_value(stu1);
future<Student> fut1 = pro1.get_future();
future<Student> fut2 = pro2.get_future();
thread th1(MessageChange, ref(fut1) , ref(pro2));
fut2.get().printStuNameID();
th1.join();
return 0;
system("pause");
}
Output
wangshuo -- 678
wangshuo -- 678
#include <iostream>
#include <thread>
#include <future>
#include <string>
using namespace std;
class Student;
class Student{
public:
Student(){};
Student(string name,uint32_t id);
~Student(){};
void setName(string name){
Name = name;
};
void setID(uint32_t id){
ID = id;
};
void printStuNameID(Student &student){
cout<<student.Name<<" -- "<<student.ID << endl;
}; //本函数纯属废话
void printStuNameID(){
cout<<Name<<" -- "<<ID << endl;
};
private:
string Name;
uint32_t ID;
};
Student::Student(string name,uint32_t id){
Name = name;
ID = id;
};
int main(){
string tempName= "wangshuo";
uint32_t tempID = 678;
Student stu1(tempName, tempID);
stu1.printStuNameID(); //打印stu1的信息;
//在另一个线程里完成stu2对stu1信息的拷贝;
Student stu2;
promise<Student> pro1,pro2;
// pro1.set_value(stu1);
future<Student> fut1 = pro1.get_future();
future<Student> fut2 = pro2.get_future();
shared_ptr< promise<Student> > ptr1(make_shared< promise<Student> >()); //要求使用指针
auto fut3 = ptr1->get_future();
ptr1->set_value(stu1);
auto temp = fut3.get();
temp.printStuNameID();
return 0;
system("pause");
}
Output
wangshuo -- 678
wangshuo -- 678