void helloFiber(boost::fibers::future<void> &f)
{
cout << "Hello, boost::fiber" << endl;
f.get();
}
int main()
{
boost::fibers::promise<void> pm;
boost::fibers::future<void> ft = pm.get_future();
{
boost::fibers::fiber f(helloFiber, std::move(ft));
cout << "Before join." << endl;
f.detach();
}
pm.set_value();
cout << "After join." << endl;
return 0;
}
このプログラムは、以下を出力します。参加する前に。参加した後。こんにちは、ブースト::繊維。fiber.detach()の後に実行すると?
なぜ出力されないのですか:参加する前に。こんにちは、ブースト::繊維参加後。
後にそれはなぜ必要がありますか?特定のシーケンスで実行が予想される場合は、シーケンシャルコードを記述する必要があります。さもなければ、不当な仮定をしないでください。 –
創作後のファイバーがすぐに実装されることを願っています。しかし、適切なメソッドを見つけることができないようですが、fib.join()メソッドがブロックされています。私はブロッキングではなく、すぐに実行されて見つけることを望む –