在一个线程中调用
std::move_only_function
对象并在另一个线程中替换它指向的函数是否安全?
我的代码:
#include <future>
#include <functional>
int main() {
std::move_only_function<void()> fn = []{};
auto future1 = std::async(std::launch::async, [&]{ fn(); });
auto future2 = std::async(std::launch::async, [&]{ fn = []{}; });
future1.get();
future2.get();
}
我不在乎是调用旧函数还是新函数。我还知道
fn
始终具有有效的功能。
std::move_only_function::operator=
) 不保证是原子的。