注意Sleep
中的大写字母“S”。具有大写“S”的Sleep
是在PC上休眠毫秒的标准函数。在Mac OS X上,没有这样的符号。但是,Xcode链接环境似乎找到了链接它的东西。它是什么?
答案 0 :(得分:6)
嗯,这是一个旧的Carbon函数(在CoreServices / OSServices框架中)让计算机进入睡眠状态。我找不到任何文件。
答案 1 :(得分:2)
sleep(int)是运行mac的unix系统中的一种方法,称为Darwin。
本质上它是一个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()
是您要链接的其他内容的函数。