複製鏈接
請複製以下鏈接發送給好友

Wait

(英語單詞)

鎖定
wait英語中有等待的意思,在計算機領域它還是一種Java術語,C語言中也有wait命令。
中文名
等待
外文名
Wait
其    他
Java術語
屬    性
單詞
詞    組
wait for ,wait up
詞    性
動詞,名詞

Wait產品概述

public final voidwait throwsInterruptedException在其他線程調用此對象的notify方法或notifyAll方法前,導致當前線程等待。換句話説,此方法的行為就好像它僅執行 wait(0)調用一樣。 當前線程必須擁有此對象監視器。該線程發佈對此監視器的所有權並等待,直到其他線程通過調用 notify方法,或 notifyAll方法通知在此對象的監視器上等待的線程醒來。然後該線程將等到重新獲得對監視器的所有權後才能繼續執行。 對於某一個參數的版本,實現中斷和虛假喚醒是可能的,而且此方法應始終在循環中使用: synchronized (obj) while (<condition does not hold>) obj.wait; ..拋出:IllegalMonitorStateException- 如果當前線程不是此對象監視器的所有者。InterruptedException- 如果在當前線程等待通知之前或者正在等待通知時,任何線程中斷了當前線程。在拋出此異常時,當前線程的中斷狀態被清除。
當前線程必須擁有此對象監聽器。 此方法導致當前線程(稱之為 T)將其自身放置在對象的等待集中,然後放棄此對象上的所有同步要求。出於線程調度目的,在發生以下四種情況之一前,線程 T被禁用,且處於休眠狀態: 其他某個線程調用此對象的 notify方法,並且線程 T碰巧被任選為被喚醒的線程。
大約已經到達指定的實際時間。但是,如果 timeout為零,則不考慮實際時間,在獲得通知前該線程將一直等待。
然後,從對象的等待集中刪除線程T,並重新進行線程調度。然後,該線程以常規方式與其他線程競爭,以獲得在該對象上同步的權利;一旦獲得對該對象的控制權,該對象上的所有其同步聲明都將被恢復到以前的狀態,這就是調用 wait方法時的情況。然後,線程T從 wait方法的調用中返回。所以,從 wait方法返回時,該對象和線程T的同步狀態與調用 wait方法時的情況完全相同。 在沒有被通知、中斷或超時的情況下,線程還可以喚醒一個所謂的虛假喚醒(spurious wakeup)。雖然這種情況在實踐中很少發生,但是應用程序必須通過以下方式防止其發生,即對應該導致該線程被提醒的條件進行測試,如果不滿足該條件,則繼續等待。

Wait參數

此方法類似於一個參數的wait方法,但它允許更好地控制在放棄之前等待通知的時間量。用毫微秒度量的實際時間量可以通過以下公式計算出來: 1000000*timeout+nanos在其他所有方面,此方法執行的操作與帶有一個參數的wait(long)方法相同。需要特別指出的是,wait(0, 0)與 wait(0)相同。
timeout毫秒值與 nanos毫微秒參數值之和指定的超時時間已用完。
然後,該線程等到重新獲得對監視器的所有權後才能繼續執行。 對於某一個參數的版本,實現中斷和虛假喚醒是有可能的,並且此方法應始終在循環中使用: synchronized (obj) while (<condition does not hold>) obj.wait(timeout, nanos);參數:timeout- 要等待的最長時間(以毫秒為單位)。 nanos- 額外時間(以毫微秒為單位,範圍是 0-999999)。

Wait英文

wait [weɪt]
n. 等待,
v. 等, 耽擱, 等候; 延緩, 期待

Wait函數

wait(等待子進程中斷或結束),相關函數 waitpid,fork

Wait表頭文件

#include<sys/types.h>
#include<sys/wait.h>

Wait函數原型

pid_t wait (int * status);

Wait函數説明

參數 status 是一個整形指針。如果status不是一個空指針,則終止進程的終止狀態將存儲在該指針所指向的內存單元中。如果不關心終止狀態,可以將 status參數設置為NULL。
status 不是NULL時子進程的結束狀態值會由參數 status 返回,而子進程的進程識別碼作為函數返回值返回。
調用 wait 函數時,調用進程將會出現下面的情況:
· 如果其所有子進程都還在運行,則阻塞。
· 如果一個子進程已經終止,正等待父進程獲取其終止狀態,則獲取該子進程的終止狀態然後立即返回。
· 如果沒有任何子進程,則立即出錯返回。

Wait返回值

如果執行成功則返回子進程識別碼(PID),如果有錯誤發生則返回-1。失敗原因存於errno 中。

Wait範例

#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
pid_t pid;
int status,i;
if(fork()= =0){
printf(“This is the child process .pid =%d\n”,getpid());
exit(5);
}else{
sleep(1);
printf(“This is the parent process ,wait for child...\n”);
pid=wait(&status);
i=WEXITSTATUS(status);
printf(“child’s pid =%d .exit status=%d\n”,pid,i);
執行
This is the child process.pid=1501
This is the parent process .wait for child...
child’s pid =1501,exit status =5
waitpid(等待子進程中斷或結束)
相關函數 wait,fork
表頭文件
#include<sys/types.h>
#include<sys/wait.h>
定義函數 pid_t waitpid(pid_t pid,int * status,int options);
函數説明
waitpid()會暫時停止進程的執行,而子進程的進程識別碼也會一快返回。如果不在意結束狀態值,則參數status 可以設成NULL。參數pid 為欲等待的子進程識別碼,其他數值意義如下:

Wait用途

等待直到一個進程標識終止。

Wait語法

wait [ ProcessID ... ]
表示狀態,時間的延續。

Wait描述

wait 命令等待(暫停執行)直到由ProcessID 變量指定的進程標識終止。如果沒有指定ProcessID 變量,wait 命令會等待直到調用 shell 的所有已知進程標識終止並且以0 為退出狀態退出。如果ProcessID 變量代表一個未知的進程標識,wait 命令會把它們視為以127 為退出狀態退出的已知進程標識。wait 命令以ProcessID 變量指定的上個進程標識的退出狀態退出。

Wait標誌

ProcessID 指定一個命令的無符號十進制整數進程標識,wait 命令會等待直到該進程標識終止。
退出狀態
如果指定一個或多個操作數,所有的操作數終止或不為調用 shell 所知,並且上個操作數指定的狀態是已知的,那麼 wait 命令的退出狀態與上個操作數指定的命令退出狀態信息相同。如果進程由於收到信號而異常終止,那麼退出狀態會大於128 並且與其它信號生成的退出狀態信息不同,儘管未指定確切的狀態值(請參閲 kill -l 命令選項)。否則,wait 命令會以以下值中的一個退出:
0 以無操作數方式調用 wait 命令,並且調用的 shell 所已知的所有進程標識已經終止。
1-126 wait 命令檢測到一個錯誤。
127 由上一個指定的ProcessID操作數所標識的命令是未知的。

Wait文件

/usr/bin/wait 包含 wait 命令。

WaitJava術語

術語名稱:wait
術語解釋:是一個UNIX命令。它等待所有後台進程都完成後報告各自的結束狀態。