GNU CommonC++
thread2.cpp
#include <cc++/thread.h>
#include <cstdio>
#include <cstring>
#include <iostream>
#ifdef CCXX_NAMESPACES
using namespace std;
using namespace ost;
#endif
// Test child thread destroying before father
//
class Child: public Thread
{
public:
Child()
{ }
void run() {
cout << "child start" << endl;
Thread::sleep(3000);
cout << "child end" << endl;
}
void final() {
// delete this;
}
};
class Father: public Thread
{
public:
Father()
{ }
void run() {
cout << "starting child thread" << endl;
Thread *th = new Child();
th->detach();
Thread::sleep(1000);
cout << "father end" << endl;
}
void final() {
// delete this; - not used since detached threads self delete
// reset memory to test access violation
memset(this,0,sizeof(*this));
}
};
int main(int argc, char* argv[])
{
cout << "starting father thread" << endl;
Father *th = new Father();
th->start();
Thread::sleep(10000);
return 0;
}
Every thread of execution in an application is created by instantiating an object of a class derived ...
Definition thread.h:1094
int detach(Semaphore *start=0)
Start a new thread as "detached".
Definition address.h:64
Synchronization and threading services.