]> git.sesse.net Git - stockfish/blob - src/thread.h
Add dbg_before() and dbg_after()
[stockfish] / src / thread.h
1 /*
2   Glaurung, a UCI chess playing engine.
3   Copyright (C) 2004-2008 Tord Romstad
4
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.
9   
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.
14   
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/>.
17 */
18
19
20 #if !defined(THREAD_H_INCLUDED)
21 #define THREAD_H_INCLUDED
22
23
24 ////
25 //// Includes
26 ////
27
28 #include "lock.h"
29 #include "movepick.h"
30 #include "position.h"
31 #include "search.h"
32
33
34 ////
35 //// Constants and variables
36 ////
37
38 const int THREAD_MAX = 8;
39
40
41 ////
42 //// Types
43 ////
44
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;
61 };
62
63
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];
75 };
76
77
78 #endif // !defined(THREAD_H_INCLUDED)