]> git.mxchange.org Git - simgear.git/commitdiff
Add support for binding a thread to a specific CPU (IRIX only at this time).
authorehofman <ehofman>
Sun, 9 Jan 2005 10:24:54 +0000 (10:24 +0000)
committerehofman <ehofman>
Sun, 9 Jan 2005 10:24:54 +0000 (10:24 +0000)
simgear/threads/SGThread.cxx
simgear/threads/SGThread.hxx

index 0d6f304cc86a379a9c402283b4a4c4b97eb02ecd..d786c24a1a496dcace9e6335c0aafc53396d1883 100644 (file)
@@ -4,7 +4,7 @@
 #  include <time.h>
 #else
 #  if defined ( sgi ) && !defined( __GNUC__ )
-     // This works arounf a bug triggered when using MipsPro 7.4.1
+     // This works around a bug triggered when using MipsPro 7.4.1
      // and (at least) IRIX 6.5.20
 #    include <iostream>
 #  endif
index fd7d4e660fbaac5c50cd419a590e9700e2b066bc..fcbc0cb59bc61640f5f59113f9df5ce933ea1ff6 100644 (file)
@@ -67,9 +67,11 @@ public:
 
     /**
      * Start the underlying thread of execution.
+     * @param cpu An optional parameter to specify on which CPU to run this
+     * thread (only supported on IRIX at this time).
      * @return Pthread error code if execution fails, otherwise returns 0.
      */
-    int start();
+    int start( unsigned cpu = 0 );
 
     /**
      * Sends a cancellation request to the underlying thread.  The target
@@ -130,10 +132,14 @@ SGThread::~SGThread()
 }
 
 inline int
-SGThread::start()
+SGThread::start( unsigned cpu )
 {
     int status = pthread_create( &tid, 0, start_handler, this );
     assert( status == 0 );
+#if defined( sgi )
+    if ( !status && !cpu )
+        pthread_setrunon_np( cpu );
+#endif
     return status;
 }