blob: 9894420e6fca7f4a8b12580e0852c63faee735f3 [file] [log] [blame]
#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;
}