Linux作業系統 sleep(0)、sleep(1)和sleep(-1)的區別,他們各有什麼作用
sleep(0)、sleep(1)和sleep(-1)的區別,他們各有什麼作用?
3個答案
linux中sleep的函式引數是unsigned int,如下:
參考連結:sleep(3) - Linux man page
sleep(-1)呼叫導致隱形的型別轉換,-1就轉化成0xffffffff,也就是32位無符號整形的最大值。
sleep(0)的結果與系統實現有關, glibc針對Linux的實現, sleep(0)不會做任何系統呼叫而直接返回。(glibc2.9中sleep原始碼)
- /* We are going to use the `nanosleep' syscall of the kernel.
- But the kernel does not implement the stupid SysV SIGCHLD
- vs. SIG_IGN behaviour for this syscall. Therefore we have
- to emulate it here. */
- unsigned int
- __sleep (unsigned int seconds)
- {
- const unsigned int max
- = (unsigned int) (((unsigned long int) (~((time_t) 0))) >> 1);
- struct timespec ts;
- sigset_t set, oset;
- /* This is not necessary but some buggy programs depend on this. */
- if (__builtin_expect (seconds == 0, 0))
- {
- #ifdef CANCELLATION_P
- CANCELLATION_P (THREAD_SELF); //相當於 pthread_testcancel();0
- #endif
- return 0;
- }
- ... ...
- }
只有sleep(1)時, 才會呼叫到nanosleep。
相關文章
- sleep()和wait()區別AI
- java yield()和sleep()的區別Java
- linux的sleep()和usleep()的使用和區別Linux
- Java_Thread類的sleep()與SystemClock類的sleep()的區別Javathread
- sleep與 wait區別AI
- Thread.Sleep(0)意義是什麼thread
- 【Java】sleep和wait區別總結JavaAI
- C# suspend sleep join 區別C#
- 請教sleep()與yield()的區別
- 延時函式delay() sleep() Sleep()函式
- Task.Delay 和 Thread.Sleep 的區別thread
- windows執行緒yield以及Sleep(0)和SwitchToThread之間的區別Windows執行緒thread
- 執行緒狀態&&Wait和sleep的區別?執行緒AI
- 多執行緒面試題之sleep()和wait()方法有什麼區別?執行緒面試題AI
- Thead物件的sleep方法,和yield方法有何區別,為什麼實現的執行緒中,在run方法中要呼叫sleep方法?物件執行緒
- 「每天一道面試題」sleep方法和wait方法有什麼區別?面試題AI
- 執行緒-sleep()執行緒
- wait() vs sleep()AI
- Linux中的sleep、usleep、nanosleep、poll和selectLinuxNaN
- Linux中Sleep和Wait命令的使用方式LinuxAI
- Systrace 執行緒 CPU 執行狀態分析技巧 - Sleep 和 Uninterruptible Sleep 篇執行緒
- C#中Thread.Sleep()的作用及用法C#thread
- linux中sleep詳解例項Linux
- kill-mysql-sleep.shMySql
- 深入Thread.sleepthread
- 在Qt中使用sleepQT
- sleep & wait | notify | notifyAllAI
- js模擬Sleep/DelayJS
- oracle DBMS_LOCK.SLEEP()的使用Oracle
- java執行緒中yield(),sleep(),wait()區別詳解Java執行緒AI
- kill_mysql_sleep_threadMySqlthread
- JUC 原始碼講解:sleep()原始碼
- Unix和Linux作業系統有什麼區別Linux作業系統
- Sleep和WaitForSingleObject,WaitForMultipleObjectsAIObjectORM
- linux與windows下C++的sleep函式LinuxWindowsC++函式
- java之yield(),sleep(),wait()區別詳解-備忘筆記JavaAI筆記
- Thread 的sleep、wait、yield、interruptthreadAI
- 理解 Thread.Sleep 函式thread函式