Warnings termination fest
[glaurung_clone.git] / src / thread.h
blob1984448511821b062fcd8b5b65680167ce87aaf3
1 /*
2 Glaurung, a UCI chess playing engine.
3 Copyright (C) 2004-2008 Tord Romstad
5 Glaurung is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
10 Glaurung is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
20 #if !defined(THREAD_H_INCLUDED)
21 #define THREAD_H_INCLUDED
24 ////
25 //// Includes
26 ////
28 #include "lock.h"
29 #include "movepick.h"
30 #include "position.h"
31 #include "search.h"
34 ////
35 //// Constants and variables
36 ////
38 const int THREAD_MAX = 8;
41 ////
42 //// Types
43 ////
45 struct SplitPoint {
46 SplitPoint *parent;
47 Position pos;
48 SearchStack sstack[THREAD_MAX][PLY_MAX];
49 SearchStack *parentSstack;
50 int ply;
51 Depth depth;
52 volatile Value alpha, beta, bestValue;
53 bool pvNode;
54 Bitboard dcCandidates;
55 int master, slaves[THREAD_MAX];
56 Lock lock;
57 MovePicker *mp;
58 volatile int moves;
59 volatile int cpus;
60 bool finished;
64 struct Thread {
65 SplitPoint *splitPoint;
66 int activeSplitPoints;
67 uint64_t nodes;
68 bool failHighPly1;
69 volatile bool stop;
70 volatile bool running;
71 volatile bool idle;
72 volatile bool workIsWaiting;
73 volatile bool printCurrentLine;
74 unsigned char pad[64];
78 #endif // !defined(THREAD_H_INCLUDED)