日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

oracle的cv函数,cv_wait 和 cv_timedwait 函数

發布時間:2025/3/19 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle的cv函数,cv_wait 和 cv_timedwait 函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

cv_wait() 和 cv_timedwait() 函數

如果使用 cv_wait(9F) 根據某個條件將線程阻塞,但該條件不發生,則該線程將永遠等待。要避免這種情況,請使用 cv_timedwait(9F),它取決于執行喚醒的其他線程。cv_timedwait() 采取絕對等待時間作為參數。如果時間已到但未發生事件,則 cv_timedwait() 將返回 -1。如果滿足條件,則 cv_timedwait() 將返回一個正值。

cv_timedwait(9F) 要求自上次重新引導系統以來的絕對等待時間(以時鐘周期表示)。通過使用 ddi_get_lbolt(9F) 檢索當前值可確定該等待時間。驅動程序通常具有的是最大等待秒數或微秒數,因此需要使用 drv_usectohz(9F) 將該值轉換為時鐘周期,然后與 ddi_get_lbolt(9F) 的值相加。

以下示例說明如何使用 cv_timedwait(9F) 最多等待五秒鐘便訪問設備,然后向調用方返回 EIO。示例?3-2使用 cv_timedwait()clock_t cur_ticks, to;

mutex_enter(&xsp->mu);

while (xsp->busy) {

cur_ticks = ddi_get_lbolt();

to = cur_ticks + drv_usectohz(5000000); /* 5 seconds from now */

if (cv_timedwait(&xsp->cv, &xsp->mu, to) == -1) {

/*

* The timeout time 'to' was reached without the

* condition being signaled.

*/

/* tidy up and exit */

mutex_exit(&xsp->mu);

return (EIO);

}

}

xsp->busy = 1;

mutex_exit(&xsp->mu);

雖然設備驅動程序寫入器通常首選使用 cv_timedwait(9F) 而不是 cv_wait(9F),但是有時選用 cv_wait(9F) 會更好。例如,如果驅動程序基于以下條件等待,則使用 cv_wait(9F) 更合適:內部驅動程序狀態發生變化,在此情況下狀態變化可能要求執行一些命令或設置要經過的時間

驅動程序的某些部分必須單線程執行

已在管理可能超時的情況,如 "A" 取決于 "B",同時 "B" 使用 cv_timedwait(9F)

總結

以上是生活随笔為你收集整理的oracle的cv函数,cv_wait 和 cv_timedwait 函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。