技术宅的结界

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

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 647|回复: 4
收起左侧

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

[复制链接]

996

主题

2213

帖子

5万

积分

用户组: 管理员

一只技术宅

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

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

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

x
到底哪里好笑了呢?我们来看看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怎能相同。

傻。

47

主题

68

帖子

594

积分

用户组: 大·技术宅

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

996

主题

2213

帖子

5万

积分

用户组: 管理员

一只技术宅

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

论大小写。Sleep(0)与sleep(0)

47

主题

68

帖子

594

积分

用户组: 大·技术宅

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

996

主题

2213

帖子

5万

积分

用户组: 管理员

一只技术宅

UID
1
精华
197
威望
261 点
宅币
16510 个
贡献
32859 次
宅之契约
0 份
在线时间
1574 小时
注册时间
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, 2018-10-19 11:21 , Processed in 0.116598 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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