00001 /* 00002 wefts_moaning.h 00003 Moaning thread abstract class 00004 00005 $Id: wefts_moaning.h,v 1.4 2003/08/15 18:03:11 jonnymind Exp $ 00006 --------------------------------------------- 00007 Begin : 2003-08-04 18:00 00008 Author : Giancarlo Niccolai 00009 00010 Last modified because: 00011 00012 */ 00013 00014 /************************************************************************** 00015 * This program is free software; you can redistribute it and/or modify * 00016 * it under the terms of the GNU Library General Public License as * 00017 * published by the Free Software Foundation; either version 2.1 of the * 00018 * License, or (at your option) any later version. * 00019 ***************************************************************************/ 00020 00021 #ifndef WT_MOANING_H 00022 #define WT_MOANING_H 00023 00024 #include <wefts_fastcond.h> 00025 #include <wefts_thread.h> 00026 00027 namespace Wefts { 00028 00115 class MoaningThread: public Thread 00116 { 00117 00118 private: 00120 bool m_canJoin; 00122 volatile int m_joiners; 00123 00124 protected: 00126 FastCondition m_cond; 00127 00135 int joiners() { return m_joiners; } 00136 00150 void blockJoiners(); 00151 00152 public: 00154 MoaningThread(); 00155 00166 void *join() throw( NotJoinableError ); 00167 00168 00181 virtual void cleanup(); 00182 00183 }; 00184 00185 } 00186 00187 #endif 00188 /* end of wefts_moaning.h */