找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 6834|回复: 4

【C】让我们来讲一个笑话:“我们用sleep(0)进行时间片管理”

[复制链接]

1109

主题

1649

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24180 个
贡献
46222 次
宅之契约
0 份
在线时间
2294 小时
注册时间
2014-1-26
发表于 2018-6-10 17:49:59 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
到底哪里好笑了呢?我们来看看glibc的源码吧:

sleep.png
alias.png

看见没?if(seconds == 0) return 0; 所以sleep(0)毫无用处。
然而!不少人把它当成和SwitchToThread()、sched_yield()、pthread_yield()等类似的玩意儿。

这种玩法来源于Windows的Sleep(0)的用法。看M
S
DN的原文


This function causes a thread to relinquish the remainder of its time slice and become unrunnable for an interval based on the value of dwMilliseconds. The system clock "ticks" at a constant rate.

tick.png

然而,Unix、Linux的sleep(0)并不是相同的玩意儿。连时间单位都不一样了,俩API怎能相同。

傻。

本帖被以下淘专辑推荐:

回复

使用道具 举报

51

主题

31

回帖

648

积分

用户组: 大·技术宅

UID
3260
精华
7
威望
12 点
宅币
506 个
贡献
1 次
宅之契约
0 份
在线时间
23 小时
注册时间
2017-12-26
发表于 2018-6-10 17:57:58 | 显示全部楼层
就你是分析了  sleep(0) 是直接返回,什么也不是了。
回复 赞! 靠!

使用道具 举报

1109

主题

1649

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24180 个
贡献
46222 次
宅之契约
0 份
在线时间
2294 小时
注册时间
2014-1-26
 楼主| 发表于 2018-6-10 18:19:19 | 显示全部楼层
勇芳软件 发表于 2018-6-10 17:57
就你是分析了  sleep(0) 是直接返回,什么也不是了。

论大小写。Sleep(0)与sleep(0)
回复 赞! 靠!

使用道具 举报

51

主题

31

回帖

648

积分

用户组: 大·技术宅

UID
3260
精华
7
威望
12 点
宅币
506 个
贡献
1 次
宅之契约
0 份
在线时间
23 小时
注册时间
2017-12-26
发表于 2018-6-10 19:16:14 | 显示全部楼层
Sleep(0)与sleep(0) 不同吗?
回复 赞! 靠!

使用道具 举报

1109

主题

1649

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24180 个
贡献
46222 次
宅之契约
0 份
在线时间
2294 小时
注册时间
2014-1-26
 楼主| 发表于 2018-6-10 19:44:07 | 显示全部楼层
勇芳软件 发表于 2018-6-10 19:16
Sleep(0)与sleep(0) 不同吗?


你没看帖子?Sleep(0)是Windows多线程切时间片用的写法,sleep(0)是Windows转Linux的开发者想当然写出的逗比写法。
回复 赞! 靠!

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-3-29 22:23 , Processed in 0.050821 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表