[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] [gnuradio] 11/18: runtime: scheduler: no busy-waiting
From: |
git |
Subject: |
[Commit-gnuradio] [gnuradio] 11/18: runtime: scheduler: no busy-waiting |
Date: |
Fri, 1 Jul 2016 16:25:45 +0000 (UTC) |
This is an automated email from the git hooks/post-receive script.
jcorgan pushed a commit to branch next
in repository gnuradio.
commit 333670c67f8ef683b66b3fe247c3750a460cac59
Author: Bastian Bloessl <address@hidden>
Date: Mon May 2 12:49:29 2016 +0200
runtime: scheduler: no busy-waiting
---
gnuradio-runtime/include/gnuradio/tpb_detail.h | 3 +++
gnuradio-runtime/lib/tpb_thread_body.cc | 28 ++------------------------
2 files changed, 5 insertions(+), 26 deletions(-)
diff --git a/gnuradio-runtime/include/gnuradio/tpb_detail.h
b/gnuradio-runtime/include/gnuradio/tpb_detail.h
index 9b7454b..4e66014 100644
--- a/gnuradio-runtime/include/gnuradio/tpb_detail.h
+++ b/gnuradio-runtime/include/gnuradio/tpb_detail.h
@@ -58,7 +58,10 @@ namespace gr {
//! Called by pmt msg posters
void notify_msg() {
+ gr::thread::scoped_lock guard(mutex);
+ input_changed = true;
input_cond.notify_one();
+ output_changed = true;
output_cond.notify_one();
}
diff --git a/gnuradio-runtime/lib/tpb_thread_body.cc
b/gnuradio-runtime/lib/tpb_thread_body.cc
index 1f98454..d49c088 100644
--- a/gnuradio-runtime/lib/tpb_thread_body.cc
+++ b/gnuradio-runtime/lib/tpb_thread_body.cc
@@ -93,7 +93,6 @@ namespace gr {
block->clear_finished();
while(1) {
- tpb_loop_top:
boost::this_thread::interruption_point();
// handle any queued up messages
@@ -156,32 +155,9 @@ namespace gr {
{
gr::thread::scoped_lock guard(d->d_tpb.mutex);
while(!d->d_tpb.input_changed) {
-
// wait for input or message
- while(!d->d_tpb.input_changed && block->empty_handled_p()){
- boost::system_time const timeout=boost::get_system_time()+
boost::posix_time::milliseconds(250);
- if(!d->d_tpb.input_cond.timed_wait(guard, timeout)){
- goto tpb_loop_top; // timeout occurred (perform sanity checks up
top)
- }
- }
-
- // handle all pending messages
- BOOST_FOREACH(basic_block::msg_queue_map_t::value_type &i,
block->msg_queue) {
- if(block->has_msg_handler(i.first)) {
- while((msg = block->delete_head_nowait(i.first))) {
- guard.unlock(); // release lock while
processing msg
- block->dispatch_msg(i.first, msg);
- guard.lock();
- }
- }
- else {
- // leave msg in queue if no handler is defined
- // start dropping if we have too many
- if(block->nmsgs(i.first) > max_nmsgs){
- GR_LOG_WARN(LOG,"asynchronous message buffer overflowing,
dropping message");
- msg = block->delete_head_nowait(i.first);
- }
- }
+ if(!d->d_tpb.input_changed && block->empty_handled_p()) {
+ d->d_tpb.input_cond.wait(guard);
}
}
}
- [Commit-gnuradio] [gnuradio] 02/18: runtime: allow blocks w/ only msg inputs to exit, (continued)
- [Commit-gnuradio] [gnuradio] 02/18: runtime: allow blocks w/ only msg inputs to exit, git, 2016/07/01
- [Commit-gnuradio] [gnuradio] 04/18: runtime: allow msg port block finish cleanly, git, 2016/07/01
- [Commit-gnuradio] [gnuradio] 06/18: runtime: use bool for system port message, git, 2016/07/01
- [Commit-gnuradio] [gnuradio] 03/18: runtime: set_done shouldn't be set in msg handlers, git, 2016/07/01
- [Commit-gnuradio] [gnuradio] 17/18: Merge branch 'master' into next, git, 2016/07/01
- [Commit-gnuradio] [gnuradio] 05/18: runtime: whitespace, git, 2016/07/01
- [Commit-gnuradio] [gnuradio] 01/18: runtime: remove unnecessary wakeup of neighbors, git, 2016/07/01
- [Commit-gnuradio] [gnuradio] 13/18: runtime: scheduler: check changed at beginning, git, 2016/07/01
- [Commit-gnuradio] [gnuradio] 16/18: runtime: poll blocks, git, 2016/07/01
- [Commit-gnuradio] [gnuradio] 12/18: runtime: tpb, don't check msg queue, git, 2016/07/01
- [Commit-gnuradio] [gnuradio] 11/18: runtime: scheduler: no busy-waiting,
git <=
- [Commit-gnuradio] [gnuradio] 14/18: runtime: scheduler: check for messages at start of iteration, git, 2016/07/01
- [Commit-gnuradio] [gnuradio] 09/18: blocks: don't block waiting for messages, git, 2016/07/01
- [Commit-gnuradio] [gnuradio] 15/18: runtime: del left-over from blocked out, git, 2016/07/01
- [Commit-gnuradio] [gnuradio] 18/18: Merge remote-tracking branch 'bastibl/shutdown' into next, git, 2016/07/01
- [Commit-gnuradio] [gnuradio] 10/18: runtime: delete blocking wait for message, git, 2016/07/01