千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > linux進(jìn)程阻塞,linux阻塞函數(shù)

linux進(jìn)程阻塞,linux阻塞函數(shù)

來(lái)源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-11-22 19:02:09 1700650929

linux系統(tǒng)c語(yǔ)言進(jìn)程不想被sleep阻塞等待怎么解決?

建議就是重啟相關(guān)的java應(yīng)用?;蛘咧貑C(jī)器。

Sleep(ms) 的線程需要到達(dá)其設(shè)定的毫秒數(shù)才返回,除此只外,喚醒它的方法就是結(jié)束(殺死)其所在線程。需要提前獲取Sleep線程的句柄,調(diào)用TerminateThread或者與之等效的方法結(jié)束被Sleep阻塞的線程。

在應(yīng)用程序中,sleep()或者一些讀寫(xiě),同步的阻塞函數(shù),當(dāng)資源請(qǐng)求沒(méi)應(yīng)該不會(huì)占用cpu,在sleep期間。

include // 頭文件\x0d\x0aint usleep(useconds_t usec); // 函數(shù)原型\x0d\x0ausec -- 毫秒。整數(shù)。最大允許值:小于 1000000\x0d\x0a返回 0 -- 表示調(diào)用執(zhí)行成功,1 -- 失敗。

有些編譯環(huán)境下不支持 sleep 函數(shù),可以換用 _sleep( unsigned time ) 函數(shù),time 單位為 ms 。如果都不行,可以使用 for(int i=0;iT ; i++); 作為延時(shí)器,T 根據(jù)電腦速度確定,一般在 1000000 以上 。

Linux系統(tǒng)的調(diào)度方式基本上采用“ 搶占式優(yōu)先級(jí) ”方式,當(dāng)進(jìn)程在用戶(hù)模式下運(yùn)行時(shí),不管它是否自愿,核心在一定條件下(如該進(jìn)程的時(shí)間片用完或等待I/O)可以暫時(shí)中止其運(yùn)行,而調(diào)度其他進(jìn)程運(yùn)行。

linux阻塞非阻塞區(qū)別linux阻塞非阻塞

1、非阻塞就是recv/read的時(shí)候,要是接收緩沖區(qū)有數(shù)據(jù)我就讀完,沒(méi)有數(shù)據(jù)我直接帶著返回的-1和EGAIN走人,絕不睡覺(jué)等待耽誤時(shí)間。

2、阻塞IO和非阻塞IO,主要區(qū)別在于第一個(gè)階段。也即是阻塞IO,在套接字緩沖區(qū)沒(méi)準(zhǔn)備好的情況下,會(huì)一直等待。而非阻塞IO,在套接字緩沖區(qū)沒(méi)準(zhǔn)備好時(shí),會(huì)立即返回。

3、非阻塞:非阻塞套接字是指執(zhí)行此套接字的網(wǎng)絡(luò)調(diào)用時(shí),不管是否執(zhí)行成功,都立即返回。比如調(diào)用recv()函數(shù)讀取網(wǎng)絡(luò)緩沖區(qū)中數(shù)據(jù),不管是否讀到數(shù)據(jù)都立即返回,而不會(huì)一直掛在此函數(shù)調(diào)用上。

linux阻塞與非阻塞I/O?

1、阻塞操作是指在執(zhí)行設(shè)備操作時(shí),若不能獲得資源,則掛起進(jìn)程直到滿(mǎn)足可操作的條件后再進(jìn)行操作。被掛起的進(jìn)程進(jìn)入睡眠狀態(tài),被從調(diào)度器的運(yùn)行隊(duì)列移走,直到等待的條件被滿(mǎn)足。

2、同步跟異步的區(qū)別在于 數(shù)據(jù)從內(nèi)核空間拷貝到用戶(hù)空間是否由用戶(hù)線程完成 ,這里又分為同步阻塞跟同步非阻塞兩種。我們以同步非阻塞為例,如下可看到,在將數(shù)據(jù)從內(nèi)核拷貝到用戶(hù)空間這一過(guò)程,是由用戶(hù)線程阻塞完成的。

3、阻塞IO:socket 的阻塞模式意味著必須要做完IO 操作(包括錯(cuò)誤)才會(huì)返回。 非阻塞IO:非阻塞模式下無(wú)論操作是否完成都會(huì)立刻返回,需要通過(guò)其他方式來(lái)判斷具體操作是否成功。

4、非阻塞 I/O,也叫異步 I/O,顯然對(duì)應(yīng)的就是阻塞式 I/O 傳統(tǒng)的服務(wù)器語(yǔ)言大多是多線程、阻塞式 I/O。這也是 Node 與眾不同的地方,對(duì)于傳統(tǒng)的服務(wù)器語(yǔ)言,在與用戶(hù)建立連接時(shí),每一個(gè)連接都是一個(gè)線程。

5、系統(tǒng)I/O模型 可分為三類(lèi):IOCP基于非阻塞異步模型,而epoll基于非阻塞同步模型。

6、所謂阻塞,即當(dāng)內(nèi)核發(fā)現(xiàn)請(qǐng)求條件不滿(mǎn)足時(shí)(可能需要產(chǎn)生IO)將調(diào)用進(jìn)程掛起,讓出CPU給需要的進(jìn)程執(zhí)行,提高效率,調(diào)用者進(jìn)程被阻塞至條件滿(mǎn)足時(shí)再被喚醒。

tags: linux教程
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專(zhuān)屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
SQL 一行拆分成多行

SQL 語(yǔ)言是訪問(wèn)和處理關(guān)系型數(shù)據(jù)的一種標(biāo)準(zhǔn)語(yǔ)言,SQL 一行拆分成多行常見(jiàn)于一些需要用到多行的sql查詢(xún)。 一、將一行數(shù)據(jù)轉(zhuǎn)換成多行 在實(shí)際的...詳情>>

2023-11-22 20:45:11
CKEditor5中文文檔

一、簡(jiǎn)介CKEditor5是一種適用于現(xiàn)代瀏覽器的Web富文本編輯器,它是CKEditor的新版本。CKEditor5提供了更現(xiàn)代化的架構(gòu)以及一個(gè)全新的插件化API來(lái)...詳情>>

2023-11-22 20:27:11
.NetCore 下載文件

一、下載文件的方式在.NetCore中下載文件最常見(jiàn)的方式是使用HttpResponse類(lèi)的WriteFile方法。WriteFile方法將一個(gè)文件發(fā)送到響應(yīng),并將文件的內(nèi)...詳情>>

2023-11-22 20:19:59
echartsy軸刻度詳解

一、echartsy軸刻度線刻度線是指在y軸上的短橫線,用于標(biāo)記每一刻度的位置。在echarts中,可以通過(guò)以下代碼設(shè)置y軸刻度線的樣式:option = { ...詳情>>

2023-11-22 19:43:59
HTML下拉框選擇事件詳解

HTML的下拉框是頁(yè)面中常用的控件之一,它可以讓用戶(hù)在一組預(yù)設(shè)選項(xiàng)中進(jìn)行選擇。而下拉框選擇事件是指用戶(hù)在點(diǎn)擊或選擇下拉框時(shí)觸發(fā)的事件,本文...詳情>>

2023-11-22 19:29:35