summaryrefslogtreecommitdiff
path: root/src/engine/thread.c
blob: 017e9b6af79638190ce446f94a487a42e4ef700e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "engine/threads.h"
#include <stdio.h>

void *engine_thread(void *_args) {
  struct thread_args *args = (struct thread_args*)_args;
  args->stop = 0;

  int depth = 0;
  engine_message_t *message = args->message->newest_valid;
  while (true) {
    message->depth = depth++;
    message->multipv = args->id;
    ipc_moves_init(&message->pv);

    // pseudo engine work
    for (volatile int k = 0; k < 1000000000; k++) {}

    add_ipc_move(&message->pv, (ipc_move_t) { 14, 24 });

    if (args->stop || !should_continue(message, args->go_args)) {
      message->best_move = (ipc_move_t) { 12, 24 };
      message->ponder = (ipc_move_t) { 42, 54 };
      message->next = NULL;
      engine_message_mark_ready(message);
      break;
    }

    engine_message_mark_ready(message);
    message = engine_message_handler_push(args->message);
  }

  args->stop = 2;
}