pthread_cond_timedwait () в Windows - PullRequest
       0

pthread_cond_timedwait () в Windows

0 голосов
/ 29 мая 2018

Я пытаюсь реализовать функциональность pthread в своем коде.К сожалению, я не могу правильно реализовать функцию pthread_cond_timedwait().В линуксе все работает нормально.Но в Windows эта функция всегда возвращает код ошибки 10060. Вот мой простой код:

#include <fstream>
#include <Windows.h>
#define HAVE_STRUCT_TIMESPEC
#include <pthread.h>

int main()
{
  int rcTimedwait = 0;
  struct timespec timeout;
  pthread_mutex_t mutex;
  pthread_cond_t condVar;
  pthread_mutex_init(&mutex, NULL);
  pthread_cond_init(&condVar, NULL);
  timeout.tv_sec = 1;
  timeout.tv_nsec = 0;
  SetLastError(0);
  errno = 0;
  pthread_mutex_lock(&mutex);
  rcTimedwait = pthread_cond_timedwait(&condVar, &mutex, &timeout);
  printf("rcTimedwait = %d\n", rcTimedwait);
  printf("errno = %d   GetLastError = %d\n", errno, GetLastError());
  printf("tv_sec = %d   tv_nsec = %d\n", timeout.tv_sec, timeout.tv_nsec);
  pthread_mutex_unlock(&mutex);
  pthread_cond_destroy(&condVar);
  pthread_mutex_destroy(&mutex);

  return 0;
}

и вывод:

rcTimedwait = 10060
errno = 0   GetLastError = 0
tv_sec = 1   tv_nsec = 0

Заранее спасибо за любую помощь и извините за мой английский

1 Ответ

0 голосов
/ 29 мая 2018

pthread_cond_timedwait() вернул 10060, что выглядит как значение для WSAETIMEDOUT .Я удивлен, что функция не возвращает ETIMEDOUT, как ожидалось.

В любом случае, это тайм-аут, что неудивительно, поскольку в вашем примере нет другого потока, который бы сигнализировал переменную условия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...