Где объявлен msleep? - PullRequest
       1

Где объявлен msleep?

0 голосов
/ 23 августа 2010

Источник здесь говорит, что он должен работать на iPhone.Я работал с этим, но я получаю 2 ошибки, говоря, что msleep () не объявлен.Я попытался включить unistd.h, time.h и многие другие.Как я могу заставить это работать?Спасибо.

Ответы [ 3 ]

5 голосов
/ 23 августа 2010

msleep() - это нестандартный артефакт из ранних BSD, до того как clock_nanosleep() и nanosleep() сделали его в POSIX. 1010 *

Это непереносимо. В некоторых системах он доступен по умолчанию - в других необходимо скомпилировать код с _BSD_SOURCE define.

iPhone является дальним родственником Mac OS X, который является дальним родственником NeXT, который является очень дальним родственником BSD 4.x. Таким образом, функция могла бы где-то застрять в каком-то заголовке / библиотеке, но вы все равно не должны ее использовать. Если память мне не изменяет, проверьте NSThread sleepForTimeInterval: статический метод.

4 голосов
/ 23 августа 2010

В этом связанном потоке ничего нет о том, что msleep доступно. Оригинальный автор, bagusflyer, фактически реализовал их собственные msleep, заявив:

Извините. Может быть, я что-то пропустил в своем коде. Вот мой сон:

#include <sys/time.h>
void msleep (unsigned int ms) {
    int microsecs;
    struct timeval tv;
    microsecs = ms * 1000;
    tv.tv_sec  = microsecs / 1000000;
    tv.tv_usec = microsecs % 1000000;
    select (0, NULL, NULL, NULL, &tv);  
}

Однако вы должны быть осторожны с использованием этого кода, так как я думаю, по памяти, что select() является прерываемым.

1 голос
/ 23 июля 2016

Может быть, вы можете использовать usleep (). Это также в unistd.h.

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