150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/********************************************************************
250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * COPYRIGHT:
350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Copyright (c) 1997-2009, International Business Machines Corporation and
450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * others. All Rights Reserved.
550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ********************************************************************/
650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#ifndef SIMPLETHREAD_H
850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#define SIMPLETHREAD_H
950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
1050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "mutex.h"
1150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
1250294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoclass U_EXPORT SimpleThread
1350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho{
1450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehopublic:
1550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    SimpleThread();
1650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    virtual  ~SimpleThread();
1750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    int32_t   start(void);        // start the thread
1850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    UBool     isRunning();        // return true if a started thread has exited.
1950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
2050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    virtual void run(void) = 0;   // Override this to provide the code to run
2150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho                                  //   in the thread.
2250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    void *fImplementation;
2350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
2450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehopublic:
2550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    static void sleep(int32_t millis); // probably shouldn't go here but oh well.
2650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    static void errorFunc();      // Empty function, provides a single convenient place
2750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho                                  //   to break on errors.
2850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho};
2950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
3050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif
3150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
32