commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] [gnuradio] 27/43: grc: optional thread-safe setters in


From: git
Subject: [Commit-gnuradio] [gnuradio] 27/43: grc: optional thread-safe setters in generated code (#748)
Date: Thu, 2 Apr 2015 19:15:51 +0000 (UTC)

This is an automated email from the git hooks/post-receive script.

jcorgan pushed a commit to branch master
in repository gnuradio.

commit 95c59385950ca3012ba1b608250454271fb80707
Author: Sebastian Koslowski <address@hidden>
Date:   Wed Jan 7 23:07:04 2015 +0100

    grc: optional thread-safe setters in generated code (#748)
---
 grc/blocks/options.xml     | 16 ++++++++++++++++
 grc/python/flow_graph.tmpl | 19 +++++++++++++++++--
 2 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/grc/blocks/options.xml b/grc/blocks/options.xml
index c1c94e4..6588dc7 100644
--- a/grc/blocks/options.xml
+++ b/grc/blocks/options.xml
@@ -158,6 +158,22 @@ part#slurp
                        <key>1</key>
                </option>
        </param>
+       <param>
+               <name>Thread-safe setters</name>
+               <key>thread_safe_setters</key>
+               <value></value>
+               <type>enum</type>
+               <hide>part</hide>
+               <option>
+                       <name>Off</name>
+                       <key></key>
+               </option>
+               <option>
+                       <name>On</name>
+                       <key>1</key>
+               </option>
+               <tab>Advanced</tab>
+       </param>
        <check>len($window_size) == 2</check>
        <check>300 &lt;= $(window_size)[0] &lt;= 4096</check>
        <check>300 &lt;= $(window_size)[1] &lt;= 4096</check>
diff --git a/grc/python/flow_graph.tmpl b/grc/python/flow_graph.tmpl
index 45d5d60..814b513 100644
--- a/grc/python/flow_graph.tmpl
+++ b/grc/python/flow_graph.tmpl
@@ -31,6 +31,9 @@ $DIVIDER
 #end if
 # Generated: $time.ctime()
 $DIVIDER
+#if $flow_graph.get_option('thread_safe_setters')
+import threading
+#end if
 
 ## Call XInitThreads as the _very_ first thing.
 ## After some Qt import, it's too late
@@ -141,6 +144,10 @@ gr.io_signaturev($(len($io_sigs)), $(len($io_sigs)), [$(', 
'.join($size_strs))])
         self.message_port_register_hier_in("$pad['label']")
     #end for
 #end if
+#if $flow_graph.get_option('thread_safe_setters')
+
+        self._lock = threading.RLock()
+#end if
 ########################################################
 ##Create Parameters
 ##  Set the parameter to a property of self.
@@ -264,10 +271,18 @@ gr.io_signaturev($(len($io_sigs)), $(len($io_sigs)), 
[$(', '.join($size_strs))])
         return self.$id
 
     def set_$(id)(self, $id):
+    #if $flow_graph.get_option('thread_safe_setters')
+        with self._lock:
+            self.$id = $id
+        #for $callback in $var_id2cbs[$id]
+            $indent($callback)
+        #end for
+    #else
         self.$id = $id
-    #for $callback in $var_id2cbs[$id]
+        #for $callback in $var_id2cbs[$id]
         $indent($callback)
-    #end for
+        #end for
+    #end if
 
 #end for
 ########################################################



reply via email to

[Prev in Thread] Current Thread [Next in Thread]