亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4822 | 回復: 5
打印 上一主題 下一主題

[內(nèi)核入門] Linux下usleep函數(shù)求教 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2016-07-14 16:16 |只看該作者 |倒序瀏覽
usleep函數(shù)不能用于秒級以上的延時
原因分析: 在某些系統(tǒng)中usleep接受的入?yún)⒆畲笾当仨毿∮?000000(即1秒)
規(guī)避措施:
1、  用sleep函數(shù)替代
2、  通過多次usleep完成
3、  其他
說明:在Suse9/10上測試是沒有問題的,但出于可移植性考慮,不要使用usleep作秒級以上的延時

————————————————————————————————————————————

小弟看博客讀到這么一段描述,請問usleep參數(shù)大于1秒會出現(xiàn)什么情況呢?什么原因造成的?哪些系統(tǒng)會受影響啊,有沒有高手深究過這個問題,點撥一下小弟唄

論壇徽章:
9
辰龍
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辭舊歲徽章
日期:2015-03-03 16:54:1515-16賽季CBA聯(lián)賽之青島
日期:2016-03-13 23:37:1915-16賽季CBA聯(lián)賽之深圳
日期:2016-03-29 18:52:38
2 [報告]
發(fā)表于 2016-07-14 23:17 |只看該作者

回帖獎勵 +10

本帖最后由 Tinnal 于 2016-07-14 23:29 編輯

誰告訴你的?

請看MAN手冊,采用nanosleep就可以了。

論壇徽章:
0
3 [報告]
發(fā)表于 2016-07-15 06:33 |只看該作者
回復 2# Tinnal


    我在實際應用中,的確碰到了啊。我知道nanosleep,但是之前的代碼使用usleep實現(xiàn)的,不清楚為什么不能超過1s

論壇徽章:
20
程序設計版塊每日發(fā)帖之星
日期:2015-08-17 06:20:00程序設計版塊每日發(fā)帖之星
日期:2016-07-16 06:20:00程序設計版塊每日發(fā)帖之星
日期:2016-07-18 06:20:00每日論壇發(fā)貼之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16賽季CBA聯(lián)賽之江蘇
日期:2017-06-26 11:05:5615-16賽季CBA聯(lián)賽之上海
日期:2017-07-21 18:12:5015-16賽季CBA聯(lián)賽之青島
日期:2017-09-04 17:32:0515-16賽季CBA聯(lián)賽之吉林
日期:2018-03-26 10:02:16程序設計版塊每日發(fā)帖之星
日期:2016-07-15 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2016-07-07 18:37:512015亞冠之薩濟拖拉機
日期:2015-08-17 12:21:08
4 [報告]
發(fā)表于 2016-07-15 09:17 |只看該作者
瞎猜的,它是posix庫的(過時的)一部分,是man 3而不是man 2,
當它作為標準被制定出來的時候,也許標準委員會的人在想,大于1000000的休眠應該使用sleep和usleep的組合。

不知道在相關的標準文檔里,有沒有對這個限制做解釋。
總之,這應該不是一個技術實現(xiàn)問題,而是一個標準的取舍問題。

論壇徽章:
9
辰龍
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辭舊歲徽章
日期:2015-03-03 16:54:1515-16賽季CBA聯(lián)賽之青島
日期:2016-03-13 23:37:1915-16賽季CBA聯(lián)賽之深圳
日期:2016-03-29 18:52:38
5 [報告]
發(fā)表于 2016-07-15 22:13 |只看該作者
回復 3# pzb19841116


認同nswcfd的說法。應該僅僅是一個標準問題。實現(xiàn)代碼是可以大于一秒的,見如下glibc代碼:
https://github.com/lattera/glibc ... sysv/linux/usleep.c
  1. int
  2. usleep (useconds_t useconds)
  3. {
  4.   struct timespec ts = { .tv_sec = (long int) (useconds / 1000000),
  5.                          .tv_nsec = (long int) (useconds % 1000000) * 1000ul };

  6.   /* Note the usleep() is a cancellation point.  But since we call
  7.      nanosleep() which itself is a cancellation point we do not have
  8.      to do anything here.  */
  9.   return __nanosleep (&ts, NULL);
  10. }
復制代碼

論壇徽章:
20
程序設計版塊每日發(fā)帖之星
日期:2015-08-17 06:20:00程序設計版塊每日發(fā)帖之星
日期:2016-07-16 06:20:00程序設計版塊每日發(fā)帖之星
日期:2016-07-18 06:20:00每日論壇發(fā)貼之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16賽季CBA聯(lián)賽之江蘇
日期:2017-06-26 11:05:5615-16賽季CBA聯(lián)賽之上海
日期:2017-07-21 18:12:5015-16賽季CBA聯(lián)賽之青島
日期:2017-09-04 17:32:0515-16賽季CBA聯(lián)賽之吉林
日期:2018-03-26 10:02:16程序設計版塊每日發(fā)帖之星
日期:2016-07-15 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2016-07-07 18:37:512015亞冠之薩濟拖拉機
日期:2015-08-17 12:21:08
6 [報告]
發(fā)表于 2016-07-18 13:19 |只看該作者
看到了關于cancellation point的注釋,順便提一個問題。

如果某個庫函數(shù)是canellation point,通常需要做什么?
例如在這里,__naosleep的實現(xiàn)需要做什么?

需要在loop里插入一些類似于kernel里面test_need_resched之類的檢查?
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP