Too*_*sie 2 c++ multithreading promise c++11
考虑以下代码:
#include <thread>
#include <iostream>
#include <future>
std::promise<int> prom;
void thr_func(int n)
{
prom.set_value(n + 10);
}
int main()
{
std::thread t{thr_func, 5};
auto fut = prom.get_future();
int result = fut.get();
std::cout << result << std::endl;
t.join();
}
Run Code Online (Sandbox Code Playgroud)
prom同时访问该对象,即使标准说它set_value是原子的,我也找不到任何关于get_future原子(或const)的东西.
因此我想知道这样称呼是否正确get_future.
你是对的,标准没有说任何关于get_future原子的东西.同时调用它可能不安全set_value.
而是get_future在创建线程之前调用.这保证了它之前被调用set_value.
auto fut = prom.get_future();
std::thread t{thr_func, 5};
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |