diff options
author | Ben Reynwar <ben@reynwar.net> | 2013-05-19 02:55:33 -0700 |
---|---|---|
committer | Ben Reynwar <ben@reynwar.net> | 2013-05-19 02:55:33 -0700 |
commit | bb01988e75d50d82cbb44c1a49c86c1d08f05665 (patch) | |
tree | 0528dac14476d37f2cde7374a8fcb3428f879c69 /gnuradio-runtime/lib/gr_scheduler_sts.cc | |
parent | e4f0319eced22c112f7e6a4cc45bc2036d285332 (diff) | |
parent | 0fa219774dcf9141ae91204f948c029b05673f3f (diff) |
Merged in next_docs branch.
Diffstat (limited to 'gnuradio-runtime/lib/gr_scheduler_sts.cc')
-rw-r--r-- | gnuradio-runtime/lib/gr_scheduler_sts.cc | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/gnuradio-runtime/lib/gr_scheduler_sts.cc b/gnuradio-runtime/lib/gr_scheduler_sts.cc deleted file mode 100644 index 10f01edaf6..0000000000 --- a/gnuradio-runtime/lib/gr_scheduler_sts.cc +++ /dev/null @@ -1,87 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2008 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <gr_scheduler_sts.h> -#include <gr_single_threaded_scheduler.h> -#include <thread/thread_body_wrapper.h> - -class sts_container -{ - gr_block_vector_t d_blocks; - -public: - - sts_container(gr_block_vector_t blocks) - : d_blocks(blocks) {} - - void operator()() - { - gr_make_single_threaded_scheduler(d_blocks)->run(); - } -}; - - -gr_scheduler_sptr -gr_scheduler_sts::make(gr_flat_flowgraph_sptr ffg, int max_noutput_items) -{ - return gr_scheduler_sptr(new gr_scheduler_sts(ffg, max_noutput_items)); -} - -gr_scheduler_sts::gr_scheduler_sts(gr_flat_flowgraph_sptr ffg, int max_noutput_items) - : gr_scheduler(ffg, max_noutput_items) -{ - // Split the flattened flow graph into discrete partitions, each - // of which is topologically sorted. - - std::vector<gr_basic_block_vector_t> graphs = ffg->partition(); - - // For each partition, create a thread to evaluate it using - // an instance of the gr_single_threaded_scheduler - - for (std::vector<gr_basic_block_vector_t>::iterator p = graphs.begin(); - p != graphs.end(); p++) { - - gr_block_vector_t blocks = gr_flat_flowgraph::make_block_vector(*p); - d_threads.create_thread( - gr::thread::thread_body_wrapper<sts_container>(sts_container(blocks), - "single-threaded-scheduler")); - } -} - -gr_scheduler_sts::~gr_scheduler_sts() -{ - stop(); -} - -void -gr_scheduler_sts::stop() -{ - d_threads.interrupt_all(); -} - -void -gr_scheduler_sts::wait() -{ - d_threads.join_all(); -} |