- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I have some problems running a simple parallel_pipeline construct. The template errors is not really helpful to me. Can any of you spot what's wrong in my tbb::parallel_pipeline call?
#include <iostream> #include <cstdint> #include <tbb/tbb.h> #include <tbb/mutex.h> tbb::mutex mutex_console{}; class SubTask { private: int k_; char c_; public: SubTask(int k, char c) { k_ = k; c_ = c; } void operator()() const { { tbb::mutex::scoped_lock lock{mutex_console}; std::cout << "Begin task: " << k_ << ", SubTask: " << c_ << std::endl; } int64_t sum{0}; for (int64_t i = 0; i < 500000000; ++i) { if ((i % 2) == 0) { sum += i; } else { sum -= i; } } if (sum == 0) { std::cout << std::endl; } } }; class Task { private: int k_; public: Task(int k) { k_ = k; } void operator()() const { tbb::parallel_invoke( [=] { SubTask task{k_, 'a'}; task(); }, [=] { SubTask task{k_, 'b'}; task(); }); } }; void parallel_for() { tbb::task_scheduler_init init{1}; int nb_task{4}; std::vector<Task> task{}; for (int i = 0; i < nb_task; i++) { task.emplace_back(i); } tbb::parallel_for(tbb::blocked_range<int>{0, nb_task}, [=](const tbb::blocked_range<int> &range) { for (int i{range.begin()}; i < range.end(); ++i) { task(); } }); } void producer_consumer() { int nb_token{1}; int nb_task{4}; tbb::parallel_pipeline( nb_token, tbb::make_filter<void, Task>(tbb::filter::serial, [&](tbb::flow_control &fc) -> Task { if (nb_task == 0) { fc.stop(); return Task{0}; } else { --nb_task; return Task{nb_task}; } }) & tbb::make_filter<Task, void>(tbb::filter::parallel, [](Task task) { task(); })); } int main(int argc, const char *argv[]) { parallel_for(); producer_consumer(); return 0; }
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Line 42: type 'Task' has a user-defined constructor or non-trivial default constructor
This constructor conflicts with one of internal pipeline structures.
--Vladimir
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page