$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r74110 - trunk/boost/interprocess/detail
From: igaztanaga_at_[hidden]
Date: 2011-08-28 14:30:28
Author: igaztanaga
Date: 2011-08-28 14:30:28 EDT (Sun, 28 Aug 2011)
New Revision: 74110
URL: http://svn.boost.org/trac/boost/changeset/74110
Log:
Added SwitchToThread to sched_yield to improve a bit process hand-offs
Text files modified: 
   trunk/boost/interprocess/detail/win32_api.hpp |     7 ++++++-                                 
   1 files changed, 6 insertions(+), 1 deletions(-)
Modified: trunk/boost/interprocess/detail/win32_api.hpp
==============================================================================
--- trunk/boost/interprocess/detail/win32_api.hpp	(original)
+++ trunk/boost/interprocess/detail/win32_api.hpp	2011-08-28 14:30:28 EDT (Sun, 28 Aug 2011)
@@ -790,6 +790,7 @@
    , interprocess_filetime *lpExitTime,interprocess_filetime *lpKernelTime
    , interprocess_filetime *lpUserTime );
 extern "C" __declspec(dllimport) void __stdcall Sleep(unsigned long);
+extern "C" __declspec(dllimport) int __stdcall SwitchToThread();
 extern "C" __declspec(dllimport) unsigned long __stdcall GetLastError();
 extern "C" __declspec(dllimport) void __stdcall SetLastError(unsigned long);
 extern "C" __declspec(dllimport) void * __stdcall GetCurrentProcess();
@@ -921,7 +922,11 @@
 {  return ((((unsigned short)(s)) << 10) | (unsigned short)(p));   }
 
 inline void sched_yield()
-{  Sleep(1);   }
+{
+   if(!SwitchToThread()){
+      Sleep(1);
+   }
+}
 
 inline unsigned long get_current_thread_id()
 {  return GetCurrentThreadId();  }