C“睡眠”功能(大写字母“S”)在Mac上有什么作用?

时间:2010-09-30 01:46:25

标签: xcode macos sleep

注意Sleep中的大写字母“S”。具有大写“S”的Sleep是在PC上休眠毫秒的标准函数。在Mac OS X上,没有这样的符号。但是,Xcode链接环境似乎找到了链接它的东西。它是什么?

6 个答案:

答案 0 :(得分:6)

嗯,这是一个旧的Carbon函数(在CoreServices / OSServices框架中)让计算机进入睡眠状态。我找不到任何文件。

答案 1 :(得分:2)

sleep(int)是运行mac的unix系统中的一种方法,称为Darwin。

Here is the ManPage for sleep

本质上它是一个C调用,让你告诉计算机睡眠'int'秒。

或者你可以使用'usleep(unsigned int)',它将为'unsigned int'号码“微秒”睡眠,这是第二个* 1000 * 1000或1000毫秒。

Here is the ManPage 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

我希望有帮助

答案 2 :(得分:0)

相当于睡眠应

[NSThread sleepForTimeInterval:5.0];

然而,这是在几秒钟内。要使用毫秒,我认为你必须使用usleep(num * 1000),其中num是mills的数量

但我不知道Sleep(...)做了什么

答案 3 :(得分:0)

  

在Mac上,在OSX下,没有这样的符号。

我认为Classic Mac中也没有这样的符号 - 我甚至查看了THINK Reference的古代副本。

我也很惊讶在C中找到Sleep(带有大写S)函数,因为许多人使用全小写来命名C函数。

是否因为您收到链接错误而提示您提问?

答案 4 :(得分:0)

有usleep()。

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;

答案 5 :(得分:0)

您是否正在使用项目中的任何其他库?

我使用Apple的模板项目使用Cocoa和Carbon获得编译错误,但是我注意到睡眠函数(使用定义)是SDL和SFML跨平台库中的一个特性,也许还有许多其他的。 / p>

您是否仅使用苹果库在模板项目上尝试过代码示例?

可能是Sleep()是您要链接的其他内容的函数。