parent
0d5667f8de
commit
ffbc18b30a
|
@ -36,7 +36,7 @@ Value MTDF(Position *pos, Sanmill::Stack<Position> &ss, Value firstguess, Depth
|
||||||
|
|
||||||
AiThread::AiThread(int color, QObject *parent) :
|
AiThread::AiThread(int color, QObject *parent) :
|
||||||
stdThread(&AiThread::idle_loop, this),
|
stdThread(&AiThread::idle_loop, this),
|
||||||
QThread(parent),
|
QObject(parent),
|
||||||
timeLimit(3600)
|
timeLimit(3600)
|
||||||
{
|
{
|
||||||
this->us = color;
|
this->us = color;
|
||||||
|
@ -172,7 +172,7 @@ void AiThread::idle_loop() // idle_loop()
|
||||||
|
|
||||||
void AiThread::act()
|
void AiThread::act()
|
||||||
{
|
{
|
||||||
if (isFinished() || !isRunning())
|
if (exit|| !searching)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
std::lock_guard<std::mutex> lk(mutex);
|
std::lock_guard<std::mutex> lk(mutex);
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
|
|
||||||
#include <condition_variable>
|
#include <condition_variable>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include <QThread>
|
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include "position.h"
|
#include "position.h"
|
||||||
#include "search.h"
|
#include "search.h"
|
||||||
|
@ -32,11 +31,11 @@
|
||||||
#include "position.h"
|
#include "position.h"
|
||||||
#include "thread_win32_osx.h"
|
#include "thread_win32_osx.h"
|
||||||
|
|
||||||
class AiThread : public QThread
|
class AiThread : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
private:
|
public:
|
||||||
std::mutex mutex;
|
std::mutex mutex;
|
||||||
std::condition_variable cv;
|
std::condition_variable cv;
|
||||||
bool exit = false, searching = true; // Set before starting std::thread
|
bool exit = false, searching = true; // Set before starting std::thread
|
||||||
|
|
|
@ -352,10 +352,10 @@ void GameController::setEngine(int color, bool arg)
|
||||||
|
|
||||||
if (arg) {
|
if (arg) {
|
||||||
aiThread[color]->setAi(&position);
|
aiThread[color]->setAi(&position);
|
||||||
if (aiThread[color]->isRunning())
|
if (aiThread[color]->searching)
|
||||||
aiThread[color]->start_searching();
|
aiThread[color]->start_searching();
|
||||||
else
|
else
|
||||||
aiThread[color]->start();
|
aiThread[color]->start_searching();
|
||||||
} else {
|
} else {
|
||||||
aiThread[color]->start_searching();
|
aiThread[color]->start_searching();
|
||||||
}
|
}
|
||||||
|
|
|
@ -268,11 +268,11 @@ public slots:
|
||||||
void startAiThreads()
|
void startAiThreads()
|
||||||
{
|
{
|
||||||
if (isAiPlayer[BLACK]) {
|
if (isAiPlayer[BLACK]) {
|
||||||
aiThread[BLACK]->start();
|
aiThread[BLACK]->start_searching();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isAiPlayer[WHITE]) {
|
if (isAiPlayer[WHITE]) {
|
||||||
aiThread[WHITE]->start();
|
aiThread[WHITE]->start_searching();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -280,11 +280,11 @@ public slots:
|
||||||
{
|
{
|
||||||
if (isAiPlayer[BLACK]) {
|
if (isAiPlayer[BLACK]) {
|
||||||
aiThread[BLACK]->start_searching();
|
aiThread[BLACK]->start_searching();
|
||||||
aiThread[BLACK]->wait();
|
aiThread[BLACK]->wait_for_search_finished();
|
||||||
}
|
}
|
||||||
if (isAiPlayer[WHITE]) {
|
if (isAiPlayer[WHITE]) {
|
||||||
aiThread[WHITE]->start_searching();
|
aiThread[WHITE]->start_searching();
|
||||||
aiThread[WHITE]->wait();
|
aiThread[WHITE]->wait_for_search_finished();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -296,8 +296,8 @@ public slots:
|
||||||
|
|
||||||
void waitThreads()
|
void waitThreads()
|
||||||
{
|
{
|
||||||
aiThread[BLACK]->wait();
|
aiThread[BLACK]->wait_for_search_finished();
|
||||||
aiThread[WHITE]->wait();
|
aiThread[WHITE]->wait_for_search_finished();
|
||||||
}
|
}
|
||||||
|
|
||||||
void stopAndWaitThreads()
|
void stopAndWaitThreads()
|
||||||
|
|
Loading…
Reference in New Issue