C sleep(1)用来延迟一秒,精确吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C sleep(1)用来延迟一秒,精确吗?相关的知识,希望对你有一定的参考价值。

C编程

sleep是毫秒为单位的。你想延迟1S,请用sleep(1000);
这个还是很精确的。追问

但是有人说,sleep的参数是以1秒为单位啊,而且我实际中操作,sleep(1)确实是1秒,我遇到socket通讯时,数据丢失问题,所以想确定一下sleep(1)是否精确?

追答

是的,Sleep單位是毫秒,一般都用的Sleep。
你參考下列連接描述:

参考资料:http://baike.baidu.com/view/2539437.htm

参考技术A 这个不一定,因为现在计算机是多任务的,当系统繁忙时可能会因为没有分到时间片而稍有延时; 参考技术B 好像在系统非常繁忙的时候会有延迟 参考技术C 应该是 Sleep(1000)

延迟后执行方法不使用 NSThread 或 sleep() - 还有其他选择吗?

【中文标题】延迟后执行方法不使用 NSThread 或 sleep() - 还有其他选择吗?【英文标题】:execute method after delay not using NSThread or sleep() - is there another option? 【发布时间】:2011-07-12 14:06:10 【问题描述】:

iOS4 中是否有办法在延迟后使用 NSThread 以外的其他方法调用方法或使用 sleep() 阻塞 UI?

【问题讨论】:

【参考方案1】:
    double delayInSeconds = 2.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void)
        // code to be executed on main thread.If you want to run in another thread, create other queue
    );

【讨论】:

这正是我要找的东西,我几周前偶然发现了它,但又找不到它!!! 在 Xcode 中键入 dispatch_a 并按 ESC,自动完成将使用此代码启动:D 美人。感谢您提供这个简单(且有效)的示例)。赞成!【参考方案2】:
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay

NSObject 会为你做这件事。

此外,您可以创建一个NSTimer 并让它在给定时间后对某个目标和选择器执行回调。

【讨论】:

【参考方案3】:

您可以使用NSTimer。 (例如timerWithTimeInterval:target:selector:userInfo:repeats

【讨论】:

如果您重视必须取消方法的调用,我会说这是最好的,因为您可以保留 NSTimer 并按需失效。【参考方案4】:
[self performSelector:@selector(methodName) withObject:nil afterDelay:2.0];

【讨论】:

【参考方案5】:
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self 
         selector:@selector(aMethod:) userInfo:nil repeats:NO];

- (void) aMethod:(NSTimer *) aTimer 
  //task to do after the delay.

【讨论】:

定时器方法应该有一个参数;计时器在触发时自行进入:- (void) aMethod: (NSTimer *)tim; 没有它也能正常工作。但是 API 文档建议发送 timer 参数。谢谢。【参考方案6】:

您可以通过以下方式轻松做到这一点:

[self performSelector:@selector(methodName) withObject:nil afterDelay:5];

【讨论】:

以上是关于C sleep(1)用来延迟一秒,精确吗?的主要内容,如果未能解决你的问题,请参考以下文章

linux shell脚本中的延时

延迟不到一秒,Swift 2

linux shell脚本中的延时

延迟后执行方法不使用 NSThread 或 sleep() - 还有其他选择吗?

在 Delphi 中编程延迟的最佳方法是啥?

在没有 time.sleep 的代码中添加时间延迟(代码包含线程)