Index: /soft/giet_vm/giet_libs/mwmr_channel.c
===================================================================
--- /soft/giet_vm/giet_libs/mwmr_channel.c	(revision 730)
+++ /soft/giet_vm/giet_libs/mwmr_channel.c	(revision 731)
@@ -321,6 +321,6 @@
         }
 
-        // we could deschedule before retry...
-        // giet_context_switch();
+        // deschedule before retry
+        giet_pthread_yield();
     }
 } // end mwmr_write()
@@ -408,6 +408,6 @@
         }
 
-        // we could deschedule before retry...
-        // giet_context_switch();
+        // deschedule before retry
+        giet_pthread_yield();
     }
 } // end mwmr_read() 
@@ -472,4 +472,7 @@
         {
             items = nb_mwmr_read( bufio->mwmr , (uint32_t*)bufio->base , bufio->nitems );
+
+            // deschedule if channel empty
+            if (items == 0 ) giet_pthread_yield();
         } 
         while ( items == 0 );
@@ -513,4 +516,7 @@
             {
                 items = nb_mwmr_read( bufio->mwmr , (uint32_t*)bufio->base , bufio->nitems );
+
+                // deschedule if channel empty
+                if (items == 0 ) giet_pthread_yield();
             } 
             while ( items == 0 );
