不同平臺下 sleep區別用法

應用程序:
#include <syswait.h>
usleep(n) //n微秒
Sleep(n)//n毫秒
sleep(n)//n
驅動程序:
#include <linux/delay.h>
mdelay(n) //微秒milliseconds 其實現
#ifdef notdef
#define mdelay(n) (\
{unsigned long msec=(n); while (msec--) udelay(1000);})
#else
#define mdelay(n) (\
(__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \
({unsigned long msec=(n); while (msec--) udelay(1000);}))
#endif
調用asm/delay.h的udelay,udelay應該是納秒級的延時

Dos:
sleep(1); //停留1
delay(100); //停留100毫秒???
Windows:
Sleep(100); //停留100毫秒
Linux:
sleep(1); //停留1
usleep(1000); //停留1毫秒
每一個平臺不太一樣,最好自己定義一套跨平臺的宏進行控制??

秒還是微秒?關于延時函數sleep()

因為要寫一段代碼,需要用到sleep()函數,在我印象中,sleep(10)好像是休眠10微秒,結果卻是休眠了10秒(在Linux下)。覺得很奇怪,因為頭兒也記得好像是微秒為單位的。所以就查了一下。
原來linux下的sleep函數原型為:
unsigned int sleep(unsigned int seconds);
而MFC中的Sleep函數原型為:
void Sleep(DWORD dwMilliseconds);
也就是說,Linux下(使用的gcc的庫),sleep()函數是以秒為單位的,sleep(1);就是休眠1秒。而MFC下的sleep()函數是以微秒為單位的,sleep(1000);才是休眠1秒。原來如此啊。而如果在Linux下也用微妙為單位休眠,可以使用線程休眠函數:void usleep(unsigned long usec);當然,使用的時候別忘記#include <system.h>哦。
另外值得一提的是,linux下還有個delay()函數,原型為extern void delay(unsigned int msec);它可以延時msec*4毫秒,也就是如果想延時一秒鐘的話,可以這么用 delay(250);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254088.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254088.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254088.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

各視頻、各音頻之間格式任意玩弄(圖文詳解)

寫在前面說的話 在這里&#xff0c;記錄下來&#xff0c;是為了方便以后偶爾所制作所需和你們前來的瀏覽學習。 學會&#xff0c;玩弄一些視頻和音頻的軟件&#xff0c;只有好處沒有害處。同時&#xff0c;也不需很多時間&#xff0c;練練手罷了。也是方便自己所用吧&#xff0…

oracle 如何查看日志?

2019獨角獸企業重金招聘Python工程師標準>>> Oracle日志查看一&#xff0e;Oracle日志的路徑&#xff1a;登錄&#xff1a;sqlplus "/as sysdba"查看路徑&#xff1a;SQL> select * from v$logfile;SQL> select * from v$logfile;(#日志文件路徑)二…

回歸_英國酒精和香煙關系

sklearn實戰-乳腺癌細胞數據挖掘(博客主親自錄制視頻教程) https://study.163.com/course/introduction.htm?courseId1005269003&utm_campaigncommission&utm_sourcecp-400000000398149&utm_mediumshare 數據統計分析聯系:&#xff31;&#xff31;&#xff1a;&a…

C# ini文件讀寫函數

namespace Tools {class IniOperate{[DllImport("kernel32")]private static extern int GetPrivateProfileString(string section, string key,

Visual studio內存泄露檢查工具--BoundsChecker

BoundsChecker是一個Run-Time錯誤檢測工具&#xff0c;它主要定位程序在運行時期發生的各種錯誤。 BoundsChecker能檢測的錯誤包括&#xff1a; 1&#xff09;指針操作和內存、資源泄露錯誤&#xff0c;比如&#xff1a;內存泄露&#xff1b;資源泄露&#xff…

【轉】如何用Maven創建web項目(具體步驟)

使用eclipse插件創建一個web project 首先創建一個Maven的Project如下圖 我們勾選上Create a simple project &#xff08;不使用骨架&#xff09; 這里的Packing 選擇 war的形式 由于packing是war包&#xff0c;那么下面也就多出了webapp的目錄 由于我們的項目要使用eclipse發…

CST光源控制卡簡單操作C#程序

namespace Machine {class LightCST{private SerialPort serialPort ;public LightCST(){serialPort = new SerialPort();}

可能是目前最詳細的Redis內存模型及應用解讀

Redis是目前最火爆的內存數據庫之一&#xff0c;通過在內存中讀寫數據&#xff0c;大大提高了讀寫速度&#xff0c;可以說Redis是實現網站高并發不可或缺的一部分。 我們使用Redis時&#xff0c;會接觸Redis的5種對象類型&#xff1a;字符串、哈希、列表、集合、有序集合。豐富…

bootcmd 和bootargs

看到這個標題&#xff0c;可能覺得這個并沒有什么的&#xff0c;其實不然&#xff0c;編好了u-boot了&#xff0c;但是如何來使用確不是那么簡單的&#xff0c;想當初我將uboot制作出來后以為全部都搞定了&#xff0c;屁顛屁顛的燒到板子上后可系統就是起不來&#xff0c;為什么…

名詞解釋(容器、并發,插件,腳本)及程序對象的創建和注釋文檔

一、專有名詞 1‘  容器 創建一種對象類型&#xff0c;持有對其他對象的引用&#xff0c;被稱為容器的新對象。在任何時候都可以擴充自己以容納置于其中的所有東西。 java在其標準類庫中包含了大量的容器。在某些類庫中&#xff0c;一兩個通用容器足以滿足所有的需要&#xf…

POJ 1696 Space Ant 極角排序(叉積的應用)

題目大意&#xff1a;給出n個點的編號和坐標&#xff0c;按逆時針方向連接著n個點&#xff0c;按連接的先后順序輸出每個點的編號。 題目思路&#xff1a;Cross&#xff08;a,b&#xff09;表示a,b的叉積&#xff0c;若小于0&#xff1a;a在b的逆時針方向&#xff0c;若大于0a在…

C#模板匹配創建模板與查找模板函數

class ShapeModulInspect{/// <summary>/// /// </summary>/// <param name="InspectImg">圖像</param>/// <param name="ModulRoi">ROI</param>/// <param name="AngleStart">起始角</param>/…

SuperMap iDesktop之導入數據

SuperMap作為一個平臺軟件有自己的數據格式&#xff0c;現要將ESRI的SHP數據導入到SuperMap的udb數據庫中&#xff0c;可以完成導入&#xff0c;但也不得不說幾點問題。 下面是ArcGIS中批量導入SHP的操作界面。 比較分析 &#xff08;1&#xff09;界面簡潔性 明顯ArcGIS要簡潔…

Ajax教程

AJAX AJAX Asynchronous JavaScript and XML&#xff08;異步的 JavaScript 和 XML&#xff09;。 AJAX 不是新的編程語言&#xff0c;而是一種使用現有標準的新方法。 AJAX 是與服務器交換數據并更新部分網頁的藝術&#xff0c;在不重新加載整個頁面的情況下。 AJAX 是一種在…

dm365 resize

DM368支持視頻的縮放功能&#xff0c;例如DM365可以編碼一個720P的&#xff0c;同時可以以任意分辨率&#xff08;小于720P的分辨率&#xff09;輸出。其中有兩種模式&#xff1a;IMP_MODE_SINGLE_SHOT&#xff0c;IMP_MODE_CONTINUOUS. 在用dm365的時候&#xff0c;用resizer…

SSH

http://www.cnblogs.com/hoobey/p/5512924.html struts --- 控制器 hibernate 操作數據庫 spring 解耦 Struts 、 spring 、 Hibernate 在各層的作用 1 &#xff09; struts 負責 web 層 . ActionFormBean 接收網頁中表單提交的數據&#xff0c;然后通過 Action 進…

C#halcon點擬合圓形函數

public bool FitCircle(double[] X, double[] Y, out double RcX, out double RcY, out double R){t

MyBatis 實踐 -配置

MyBatis 實踐標簽&#xff1a; Java與存儲 Configuration mybatis-configuration.xml是MyBatis的全局配置文件(文件名稱隨意),其配置內容和順序例如以下: properties : 屬性(文件)載入/配置settings : 全局配置參數typeAliases : 定義類型別名typeHandlers : 類型處理器objectF…

DM365視頻處理流程/DM368 NAND Flash啟動揭秘

DM365的視頻處理涉及到三個相關處理器&#xff0c;分別是視頻采集芯片、ARM處理器和視頻圖像協處理器&#xff08;VICP&#xff09;&#xff0c;整個處理流程由ARM核協調。視頻處理主要涉及三個處理流程&#xff0c;分別是視頻采集、視頻編碼和對編碼后的視頻的處理&#xff0c…

系統的Drawable(四)-LayerListDrawable

系統的Drawable(四)-LayerListDrawable 學習自 https://blog.csdn.net/u014695188/article/details/52815444 LayerListDrawable 漫談 使用layer-list可以將多個drawable按照順序層疊在一起顯示&#xff0c;默認情況下&#xff0c;所有的item中的drawable都會自動根據它附上vie…