X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fthreads%2FSGThread.hxx;h=477ca458f354b6f10807e766a00aa3f006386b1d;hb=6a07c2282673562f67d12d31cd618be85d80f45a;hp=fd7d4e660fbaac5c50cd419a590e9700e2b066bc;hpb=d8a75897526f2ba2a030225a22dfbd93c7c39a7e;p=simgear.git diff --git a/simgear/threads/SGThread.hxx b/simgear/threads/SGThread.hxx index fd7d4e66..477ca458 100644 --- a/simgear/threads/SGThread.hxx +++ b/simgear/threads/SGThread.hxx @@ -16,7 +16,7 @@ // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // $Id$ @@ -26,13 +26,8 @@ #include #include -#if defined ( SG_HAVE_STD_INCLUDES ) -# include -# include -#else -# include -# include -#endif +#include +#include class SGThread; @@ -67,9 +62,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 +127,15 @@ SGThread::~SGThread() } inline int -SGThread::start() +SGThread::start( unsigned cpu ) { int status = pthread_create( &tid, 0, start_handler, this ); assert( status == 0 ); + (void)status; +#if defined( sgi ) + if ( !status && !cpu ) + pthread_setrunon_np( cpu ); +#endif return status; } @@ -142,6 +144,7 @@ SGThread::join() { int status = pthread_join( tid, 0 ); assert( status == 0 ); + (void)status; } inline void @@ -149,6 +152,7 @@ SGThread::cancel() { int status = pthread_cancel( tid ); assert( status == 0 ); + (void)status; } /** @@ -213,24 +217,28 @@ inline SGMutex::SGMutex() { int status = pthread_mutex_init( &mutex, 0 ); assert( status == 0 ); + (void)status; } inline SGMutex::~SGMutex() { int status = pthread_mutex_destroy( &mutex ); assert( status == 0 ); + (void)status; } inline void SGMutex::lock() { int status = pthread_mutex_lock( &mutex ); assert( status == 0 ); + (void)status; } inline void SGMutex::unlock() { int status = pthread_mutex_unlock( &mutex ); assert( status == 0 ); + (void)status; } /** @@ -301,30 +309,35 @@ inline SGPthreadCond::SGPthreadCond() { int status = pthread_cond_init( &cond, 0 ); assert( status == 0 ); + (void)status; } inline SGPthreadCond::~SGPthreadCond() { int status = pthread_cond_destroy( &cond ); assert( status == 0 ); + (void)status; } inline void SGPthreadCond::signal() { int status = pthread_cond_signal( &cond ); assert( status == 0 ); + (void)status; } inline void SGPthreadCond::broadcast() { int status = pthread_cond_broadcast( &cond ); assert( status == 0 ); + (void)status; } inline void SGPthreadCond::wait( SGMutex& mutex ) { int status = pthread_cond_wait( &cond, &mutex.mutex ); assert( status == 0 ); + (void)status; } #endif /* SGTHREAD_HXX_INCLUDED */