summaryrefslogtreecommitdiff
path: root/gnuradio-core/src/lib/runtime/gr_block.h
diff options
context:
space:
mode:
authorTom Rondeau2013-02-26 12:00:47 -0500
committerTom Rondeau2013-02-26 12:00:47 -0500
commitd8e73d63c0af6ba6810319d866cab07b332d0e42 (patch)
tree3d050079c4046dd904c87b8b55317d58d527b0ab /gnuradio-core/src/lib/runtime/gr_block.h
parentfa00fcc1dda7586024aebbf4caaf6347d3b56ef5 (diff)
downloadgnuradio-d8e73d63c0af6ba6810319d866cab07b332d0e42.tar.gz
gnuradio-d8e73d63c0af6ba6810319d866cab07b332d0e42.tar.bz2
gnuradio-d8e73d63c0af6ba6810319d866cab07b332d0e42.zip
core: adding a mutex as a protected member of gr_block for use in protecting set and work function access to variables.
This is used in gr-analog's noise_source and gr-filter's fir_filter_XXX since these two cause particular problems (in next's channel model). This shows the use of the mutex for general protection when needed.
Diffstat (limited to 'gnuradio-core/src/lib/runtime/gr_block.h')
-rw-r--r--gnuradio-core/src/lib/runtime/gr_block.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/gnuradio-core/src/lib/runtime/gr_block.h b/gnuradio-core/src/lib/runtime/gr_block.h
index 6e21d5b97..0783e8684 100644
--- a/gnuradio-core/src/lib/runtime/gr_block.h
+++ b/gnuradio-core/src/lib/runtime/gr_block.h
@@ -484,9 +484,9 @@ class GR_CORE_API gr_block : public gr_basic_block {
gr_block_detail_sptr d_detail; // implementation details
unsigned d_history;
bool d_fixed_rate;
- int d_min_noutput_items;
bool d_max_noutput_items_set; // if d_max_noutput_items is valid
int d_max_noutput_items; // value of max_noutput_items for this block
+ int d_min_noutput_items;
tag_propagation_policy_t d_tag_propagation_policy; // policy for moving tags downstream
std::vector<unsigned int> d_affinity; // thread affinity proc. mask
@@ -609,6 +609,12 @@ class GR_CORE_API gr_block : public gr_basic_block {
std::vector<long> d_max_output_buffer;
std::vector<long> d_min_output_buffer;
+ /*! Used by block's setters and work functions to make
+ * setting/resetting of parameters thread-safe.
+ *
+ * Used by calling gruel::scoped_lock l(d_setlock);
+ */
+ gruel::mutex d_setlock;
// These are really only for internal use, but leaving them public avoids
// having to work up an ever-varying list of friend GR_CORE_APIs