问题描述
我在无限循环中使用了 NSThread sleepForTimeInterval
api;
当我以两种不同的方式运行时,睡眠,唤醒间隔存在差异
1) 从终端运行 (sudo /Library/Application Support/Application_Path)
2) 通过 launchdaemons 运行它;(sudo launchctl load /Library/launchdaemons/
Nsstring *writeString = @"";
while(1){
NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy/MM/dd hh:mm:ss:SSS"];
writeString = [writeString stringByAppendingString:[Nsstring stringWithFormat:@"Thread Sleeping at Time %@ ",[dateFormatter stringFromDate:[NSDate date]]]];
[NSThread sleepForTimeInterval:0.03];
writeString = [writeString stringByAppendingString:[Nsstring stringWithFormat:@"Wake up Time:%@\n",[dateFormatter stringFromDate:[NSDate date]]]];
[writeString writetoFile:@"/SomePath/SomeFile.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
}
Output when run it from terminal:
Thread Sleeping at Time 2021/03/17 05:48:20:638 Wake up Time:2021/03/17 05:48:20:670
Thread Sleeping at Time 2021/03/17 05:48:20:672 Wake up Time:2021/03/17 05:48:20:708
Thread Sleeping at Time 2021/03/17 05:48:20:710 Wake up Time:2021/03/17 05:48:20:741
Thread Sleeping at Time 2021/03/17 05:48:20:742 Wake up Time:2021/03/17 05:48:20:774
Output When we run from launch daemon plist:
Thread Sleeping at Time 2021/03/17 05:48:48:579 Wake up Time:2021/03/17 05:48:48:723
Thread Sleeping at Time 2021/03/17 05:48:48:724 Wake up Time:2021/03/17 05:48:48:902
Thread Sleeping at Time 2021/03/17 05:48:48:904 Wake up Time:2021/03/17 05:48:49:083
Thread Sleeping at Time 2021/03/17 05:48:49:085 Wake up Time:2021/03/17 05:48:49:223
第一种方法中的线程睡眠/唤醒间隔间隔大约为 33-35 毫秒 在作为守护程序运行时,它大约需要 144-180 毫秒。
请告知为什么当我们通过 launchdaemon 运行线程唤醒时会花费更多时间
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)