1

すべてが先物を持つスレッドのグループを作成したい (それが packaged_tasks を使用する理由です) ので、それらが返す値を使用できます。ただし、次のコードはコンパイル中にエラーを返します。

boost::thread_group group;


for(int i=0; i<4; i++){
    boost::packaged_task<int> task(std::bind(&matchThis,someStr, anotherStr));
    boost::unique_future<int> fi=task.get_future();

    //add task to task-group
    group.create_thread(boost::move(task));
    group.join_all();
}

これはエラーです:

c:\boost\boost\thread\detail\thread_group.hpp:42: エラー: "boost::packaged_task::packaged_task": boost::packaged_task-class で宣言されたプライベート メンバーへのアクセスがありません。[ R=int] ...

このコードは、次のようなスレッドを作成したときに完全に機能しました。

boost::thread thread(boost::move(task));

では、代わりに thread_groups を使用することの何が問題なのですか?

4

1 に答える 1