【发布时间】:2020-07-24 05:22:14
【问题描述】:
这是我打印数据的课
class PrintData
{
int data[20];
public:
void setData(int dataValue[])
{
for( int i = 0 ; i < 20; i++)
data[i] = dataValue[i];
}
void Print()
{
for (int i = 0; i < 20; i++)
std::cout << data[i];
std::cout << std::endl;
}
};
这是主要功能
int number[20] ;
void updateNumber()
{
for (int i = 0; i < 1000; i++) {
// std::this_thread::sleep_for(std::chrono::milliseconds(1000));
for (int k = 0; k < 20; k++)
number[k] = k;
// after one iteration it should wait and after the print.Print() is executed than it should again update the data
}
}
int main()
{
PrintData print;
std::thread t(&updateNumber);
while (true)
{
// if upDateNumber has updated all the numbers than only than only set the number
print.setData(number);
print.Print();
}
return 0;
}
在线程中完成迭代后,它应该等待 print.setData(number) 函数执行,一旦该函数执行完毕,它应该再次更新数据。
如果 print.setData(number) 被调用并且线程仍未完成对数组的更新,那么 print.setData(number) 不应更新数据。
【问题讨论】:
-
你可以在c++17中使用from promise和future。
标签: c++ multithreading c++14