Что функция C "Sleep" (заглавная "S") делает на Mac? - PullRequest
4 голосов
/ 30 сентября 2010

Обратите внимание на заглавную "S" в Sleep.Sleep с большой буквы «S» - это стандартная функция, которая спит на ПК за миллисекунды.В Mac OS X такого символа нет.Однако среда связывания XCode, кажется, находит что-то, чтобы связать это с.Что это?

Ответы [ 6 ]

6 голосов
/ 30 сентября 2010

Ну, это старая старая функция Carbon (в платформе CoreServices / OSServices), которая переводит компьютер в спящий режим. Я не могу найти никакой документации.

2 голосов
/ 07 декабря 2012

sleep (int) - это метод из системы Unix, который запускает Mac, известный как Darwin.

Вот ManPage для сна

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

В качестве альтернативы вы можете использовать «usleep (unsigned int)», который будет «спать» в течение «unsigned int» числа «микросекунд», которое составляет секунды *1000* 1000 или 1000 миллисекунд.for usleep

Обе эти функции упакованы, чтобы предоставить вам доступ к базовым методам "C / C ++", которые будет использовать обычный разработчик C / C ++.

здесь эквивалентнопример кода

NSTimeInterval sleepTime = 2.0; //Time interval is a double containing fractions of seconds
[NSThread sleepForTimeInterval:sleepTime]; // This will sleep for 2 seconds
sleep((int)sleepTime); // This will also sleep for 2 seconds

если вы хотите иметь больше детализации, вам понадобится usleep (unsigned int), который даст вам гораздо более точное число.

NSTimeInterval sleepTime = 0.2; // This is essentially 2 tenths of a second
[NSThread sleepForTimeInterval:sleepTime]; // This will sleep for 2 tenths of a second;
usleep((unsigned int)(sleepTime * 1000 * 1000)); // This will also sleep for 2 tenths of a second

Надеюсь, это поможет

0 голосов
/ 30 сентября 2010

Используете ли вы какие-либо другие библиотеки в своем проекте?

Я получаю ошибки компиляции, используя и Какао, и Углерод, используя проекты шаблонов Apple, однако я замечаю, что функции сна (с использованием определения) являются функцией ви кроссплатформенные библиотеки SDL и SFML, и, возможно, для многих других.

Пробовали ли вы пример кода в шаблонном проекте, использующем только библиотеки яблок?

Возможно, Sleep()это функция в другом объекте, на который вы ссылаетесь.

0 голосов
/ 30 сентября 2010

Есть усле ().

pthread_create(&pth,NULL,threadFunc,"foo");

while(i < 100)
{
    usleep(1);
    printf("main is running...\n");
    ++i;
}

printf("main waiting for thread to terminate...\n");
pthread_join(pth,NULL);

return 0;
0 голосов
/ 30 сентября 2010

На Mac под OSX такого символа нет.

Не думаю, что в Classic mac такой символ тоже есть - я даже посмотрел в своей древней копии THINK Reference .

Я также был бы удивлен, обнаружив в C функцию Sleep (с заглавной буквы S), поскольку многие люди называют функции C, используя все строчные буквы.

Вас попросили задать вопрос, потому что вы получаете ошибку ссылки?

0 голосов
/ 30 сентября 2010

эквивалент сна должен быть

[NSThread sleepForTimeInterval:5.0];

Однако это в секундах. Чтобы использовать миллисекунды, я думаю, что вы должны использовать usleep (num * 1000), где num - количество мельниц

Но я не знаю, что делает Sleep (...)

...