//T.~T();//T.unlock();
//m_mutex.unlock();
}
protected:
private:
FXMutex m_mutex;
};
class TestThread: public FXThread
{
public:
TestThread(ThreadShow* a,int nThreadID);
~TestThread();
virtual int run();
ThreadShow* m_test;
protected:
private:
int m_nThreadID;
};
TestThread::TestThread(ThreadShow* a,int nThreadID)
{
m_test = a;
m_nThreadID = nThreadID;
}
TestThread::~TestThread()
{
}
int TestThread::run()
{
m_test->show(m_nThreadID);
return 0;
}
int main(int argc, char* argv[])
{
const int nThreadCount = 10;
int threadArray[nThreadCount];
ThreadShow* test = new ThreadShow;
for (int i=0;i{TestThread* pThread = new TestThread(test,i+1);
threadArray[i] = (int)pThread;
pThread->start();
}
for (i=0;i{((TestThread* )(threadArray[i]))->join();
}
int threadsum = 0;
do
{
threadsum = 0;
for (int i=0;i{if(threadArray[i] != 0 && !((TestThread* )(threadArray[i]))->running())
{
delete ((TestThread* )(threadArray[i]));
threadArray[i] = 0;
}
else if (threadArray[i])
{
((TestThread* )(threadArray[i]))->join();
}
threadsum += threadArray[i];
}
} while(threadsum>0);
delete test;
test = NULL;
return 0;
}