summaryrefslogtreecommitdiff
path: root/gnuradio-runtime/lib/scheduler_tpb.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gnuradio-runtime/lib/scheduler_tpb.cc')
-rw-r--r--gnuradio-runtime/lib/scheduler_tpb.cc87
1 files changed, 38 insertions, 49 deletions
diff --git a/gnuradio-runtime/lib/scheduler_tpb.cc b/gnuradio-runtime/lib/scheduler_tpb.cc
index fe593670f8..a255aa4946 100644
--- a/gnuradio-runtime/lib/scheduler_tpb.cc
+++ b/gnuradio-runtime/lib/scheduler_tpb.cc
@@ -31,32 +31,34 @@
namespace gr {
- class tpb_container
- {
+class tpb_container
+{
block_sptr d_block;
int d_max_noutput_items;
thread::barrier_sptr d_start_sync;
- public:
- tpb_container(block_sptr block, int max_noutput_items, thread::barrier_sptr start_sync)
- : d_block(block), d_max_noutput_items(max_noutput_items), d_start_sync(start_sync) {}
+public:
+ tpb_container(block_sptr block,
+ int max_noutput_items,
+ thread::barrier_sptr start_sync)
+ : d_block(block), d_max_noutput_items(max_noutput_items), d_start_sync(start_sync)
+ {
+ }
void operator()()
{
- tpb_thread_body body(d_block, d_start_sync, d_max_noutput_items);
+ tpb_thread_body body(d_block, d_start_sync, d_max_noutput_items);
}
- };
+};
- scheduler_sptr
- scheduler_tpb::make(flat_flowgraph_sptr ffg, int max_noutput_items)
- {
+scheduler_sptr scheduler_tpb::make(flat_flowgraph_sptr ffg, int max_noutput_items)
+{
return scheduler_sptr(new scheduler_tpb(ffg, max_noutput_items));
- }
+}
- scheduler_tpb::scheduler_tpb(flat_flowgraph_sptr ffg,
- int max_noutput_items)
+scheduler_tpb::scheduler_tpb(flat_flowgraph_sptr ffg, int max_noutput_items)
: scheduler(ffg, max_noutput_items)
- {
+{
int block_max_noutput_items;
// Get a topologically sorted vector of all the blocks in use.
@@ -69,48 +71,35 @@ namespace gr {
// Ensure that the done flag is clear on all blocks
- for(size_t i = 0; i < blocks.size(); i++) {
- blocks[i]->detail()->set_done(false);
+ for (size_t i = 0; i < blocks.size(); i++) {
+ blocks[i]->detail()->set_done(false);
}
thread::barrier_sptr start_sync =
- boost::make_shared<thread::barrier>(blocks.size()+1);
+ boost::make_shared<thread::barrier>(blocks.size() + 1);
// Fire off a thead for each block
- for(size_t i = 0; i < blocks.size(); i++) {
- std::stringstream name;
- name << "thread-per-block[" << i << "]: " << blocks[i];
-
- // If set, use internal value instead of global value
- if(blocks[i]->is_set_max_noutput_items()) {
- block_max_noutput_items = blocks[i]->max_noutput_items();
- }
- else {
- block_max_noutput_items = max_noutput_items;
- }
- d_threads.create_thread(thread::thread_body_wrapper<tpb_container>(
- tpb_container(blocks[i], block_max_noutput_items, start_sync),
- name.str()));
+ for (size_t i = 0; i < blocks.size(); i++) {
+ std::stringstream name;
+ name << "thread-per-block[" << i << "]: " << blocks[i];
+
+ // If set, use internal value instead of global value
+ if (blocks[i]->is_set_max_noutput_items()) {
+ block_max_noutput_items = blocks[i]->max_noutput_items();
+ } else {
+ block_max_noutput_items = max_noutput_items;
+ }
+ d_threads.create_thread(thread::thread_body_wrapper<tpb_container>(
+ tpb_container(blocks[i], block_max_noutput_items, start_sync), name.str()));
}
start_sync->wait();
- }
-
- scheduler_tpb::~scheduler_tpb()
- {
- stop();
- }
-
- void
- scheduler_tpb::stop()
- {
- d_threads.interrupt_all();
- }
-
- void
- scheduler_tpb::wait()
- {
- d_threads.join_all();
- }
+}
+
+scheduler_tpb::~scheduler_tpb() { stop(); }
+
+void scheduler_tpb::stop() { d_threads.interrupt_all(); }
+
+void scheduler_tpb::wait() { d_threads.join_all(); }
} /* namespace gr */