Use state instead of flags to track threads

This is easier to follow and also reduces the points
where state changes to mainly idle_loop() and split().

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba
2010-02-20 14:57:26 +01:00
parent 189a005a0b
commit b39a24ecca
2 changed files with 72 additions and 59 deletions

View File

@@ -64,6 +64,17 @@ struct SplitPoint {
bool finished;
};
// ThreadState type is used to represent thread's current state
enum ThreadState
{
THREAD_SEARCHING, // thread is performing work
THREAD_AVAILABLE, // thread is polling for work
THREAD_SLEEPING, // we are not thinking, so thread is sleeping
THREAD_BOOKED, // other thread (master) has booked us as a slave
THREAD_WORKISWAITING, // master has ordered us to start
THREAD_TERMINATED // we are quitting and thread is terminated
};
struct Thread {
SplitPoint *splitPoint;
@@ -71,11 +82,8 @@ struct Thread {
uint64_t nodes;
uint64_t betaCutOffs[2];
volatile bool stopRequest;
volatile bool running;
volatile bool idle;
volatile bool sleeping;
volatile bool workIsWaiting;
volatile bool printCurrentLineRequest;
volatile ThreadState state;
unsigned char pad[64]; // set some distance among local data for each thread
};