멀티 스레딩없이 작동하는 C의 기존 체스 엔진을 멀티 스레딩을 수정할 수 있는지 알고 싶습니다. 나는이 주제에 대한 경험이 없으며 약간의 지침을 고맙게 생각한다.이미 존재하는 Chess Engine에 멀티 쓰레딩 구현 C
EDIT : 더 구체적으로 말해서 negamax를 구현하여 멀티 스레드 호환이 가능하도록 추가 할 수있는 것이 있습니까? :
static double alphaBetaMax(double alpha, double beta, int depthleft, game_t game, bool player)
{
move_t *cur;
move_t *tmp;
double score = 0;
bool did_move = false;
cur = getAllMoves(game, player);
if(cur == NULL) /*/ check mate*/
return -9999999*(player*2-1);
tmp = firstMove;
firstMove = 0;
while (cur != NULL)
{
game_t copy;
if(depthleft<=0 && !isCapture(game, cur)) { /* Quiescence search */
cur = cur->next;
continue;
}
did_move = true;
copyGame(game, ©);
makeMove(©, *cur);
firstMove = NULL;
score = -alphaBetaMax(-beta, -alpha, depthleft - 1, copy, !player);
if(board_count > MAX_BOARDS)
break;
freeGame(copy);
if(score > alpha)
alpha = score;
if (beta <= alpha)
break;
cur = cur->next;
}
firstMove=tmp;
freeMoves();
if(!did_move)
alpha = evaluate(game)*(player*2-1);
return alpha;
}
어쩌면? 귀하의 질문은 너무 stackoverflow에 대한 광범위한 것입니다. – Evert
경험이 없으면 터프 해. – gnasher729
예. 있을 수있다. 진행 상황에 대해 알려주십시오. –