色综合 图片区 小说区,国产在线超清日本一本,精品国产拍国产天天人,一道本免费高清中字幕1V1

linux下nanosleep_&sleep_的區(qū)別|最新

來(lái)源:互聯(lián)網(wǎng)

你們好,今天小飯為大家?guī)?lái)的是linux下nanosleep()&sleep()的區(qū)別,希望對(duì)你們有所幫助。


(資料圖)

用戶程序中的睡眠:

sleep() usleep() nanosleep()

sleep()和nanosleep()都是使進(jìn)程睡眠一段時(shí)間后被喚醒,但是二者的實(shí)現(xiàn)完全不同。 Linux中并沒(méi)有提供系統(tǒng)調(diào)用sleep(),sleep()是在庫(kù)函數(shù)中實(shí)現(xiàn)的,它是通過(guò)調(diào)用alarm()來(lái)設(shè)定報(bào)警時(shí)間,調(diào)用sigsuspend()將進(jìn)程掛起在信號(hào)SIGALARM上,sleep()只能精確到秒級(jí)上。

nanosleep()則是Linux中的系統(tǒng)調(diào)用,它是使用定時(shí)器來(lái)實(shí)現(xiàn)的,該調(diào)用使調(diào)用進(jìn)程睡眠,并往定時(shí)器隊(duì)列上加入一個(gè)timer_list型定時(shí)器,time_list結(jié)構(gòu)里包括喚醒時(shí)間以及喚醒后執(zhí)行的函數(shù),通過(guò)nanosleep()加入的定時(shí)器的執(zhí)行函數(shù)僅僅完成喚醒當(dāng)前進(jìn)程的功能。系統(tǒng)通過(guò)一定的機(jī)制定時(shí)檢查這些隊(duì)列(比如通過(guò)系統(tǒng)調(diào)用陷入核心后,從核心返回用戶態(tài)前,要檢查當(dāng)前進(jìn)程的時(shí)間片是否已經(jīng)耗盡,如果是則調(diào)用schedule()函數(shù)重新調(diào)度,該函數(shù)中就會(huì)檢查定時(shí)器隊(duì)列,另外慢中斷返回前也會(huì)做此檢查),如果定時(shí)時(shí)間已超過(guò),則執(zhí)行定時(shí)器指定的函數(shù)喚醒調(diào)用進(jìn)程。當(dāng)然,由于系統(tǒng)時(shí)間片可能丟失,所以nanosleep()精度也不是很高。

alarm()也是通過(guò)定時(shí)器實(shí)現(xiàn)的,但是其精度只精確到秒級(jí),另外,它設(shè)置的定時(shí)器執(zhí)行函數(shù)是在指定時(shí)間向當(dāng)前進(jìn)程發(fā)送SIGALRM信號(hào)。

復(fù)制代碼 代碼如下:

#include #include #include #include #include #define COUNT 1000 #define MILLION 1000000L

int main(void) { int i; struct timespec slptm; long tdif; struct timeval tend, tstart;

slptm.tv_sec = 0; slptm.tv_nsec = 1000; //1000 ns = 1 us

//struct sched_param param; //param.sched_priority = 0; //sched_setscheduler(getpid(), SCHED_FIFO, ¶m);

if (gettimeofday(&tstart, NULL) == -1) { fprintf(stderr,"Failed to get start time/n"); return 1; } for (i = 0; i < COUNT; i++) { if (nanosleep(&slptm, NULL) == -1) { perror("Failed to nanosleep"); return 1; } } if (gettimeofday(&tend, NULL) == -1) { fprintf(stderr,"Failed to get end time/n"); return 1; } tdif = MILLION * (tend.tv_sec - tstart.tv_sec) + (tend.tv_usec - tstart.tv_usec); printf("nanosleep() time is %ld us/n", tdif/COUNT); return 0; }

HZ 250HZ 時(shí)鐘中斷的時(shí)間間隔: 4 ms (1000ms/250) ---------------------------------------- nanosleep() time is 4019 us (4.019 ms) 說(shuō)明nanosleep的睡眠定時(shí)器依賴于時(shí)鐘中斷

HZ 1000HZ 時(shí)鐘中斷的時(shí)間間隔: 1 ms ---------------------------------------- nanosleep() time is 12 us 注: 最小睡眠時(shí)間為1 us

通過(guò)上面的介紹,相信大家對(duì)于這個(gè)科技領(lǐng)域linux下nanosleep()&sleep()的區(qū)別也有了一定的了解了,希望小編精心整理的這篇內(nèi)容能夠解決你的困惑。

標(biāo)簽:

推薦

財(cái)富更多》

動(dòng)態(tài)更多》

熱點(diǎn)

中文字幕av免费专区| 日产乱码一区二区三区在线| 麻花传剧mv在线看星空| 天堂在/线资源中文在线bt| 末成年娇小性色xxxxx| 欧美一卡2卡3卡4卡新区乱码| 香港日本三级亚洲三级| 我的风流岳每3韩语中字| 亚洲av永久无码精品水牛影视| 免费看视频的网站| 中文精品久久久久人妻| 三年片在线观看免费大全| 极品粉嫩小仙女高潮喷水| 成人美女黄网站色大免费的| 久久久久久99AV无码免费网站| 又黄又爽又色的视频| 成人无码区免费AⅤ片WWW欧美| 小莹客厅激情46章至50章视频| 久久99这里只有是精品6| 亚洲av永久无码精品表情包| 可播放的男男freemovie| 狠狠色婷婷久久一区二区| 色欲色香欧美在线视频| 亚洲 人av在线影院| 亚洲精品无码久久久久不卡| 国产免费AV| 99在线精品观看视频| 老司机午夜福利视频免费播放| 尤物193在线人妻精品免费| 少妇人妻无码专区视频免费| 亚洲综合久久一本久道| 邻居人妻漫画| 免费观看亚洲人成网站| 欧美黑人肉体狂欢交换大派对 | 亚洲午夜福利AV一区二区无码| 亚洲天然素人无码专区| 国产亚洲一卡2卡3卡4卡新区| 亚洲综合伊人久久大杳蕉| 欧美日韩中文亚洲精品视频| 天海翼一区二区三区高清在线| 丁香五月缴情综合网|