c語(yǔ)言open函數(shù)可重入 c語(yǔ)言opendir函數(shù)

我要用C語(yǔ)言寫(xiě)一個(gè)可重入函數(shù),請(qǐng)問(wèn)要避開(kāi)哪些東西?

可以使用全局變量、靜態(tài)變量。關(guān)鍵是不是“只讀”。如果只讀,那怎么用都行。如果有寫(xiě)的操作,最好避開(kāi),實(shí)在避不開(kāi)就要用信號(hào)量等機(jī)制防止多線程沖突。

創(chuàng)新互聯(lián)建站是一家專(zhuān)注于成都做網(wǎng)站、成都網(wǎng)站制作與策劃設(shè)計(jì),永興網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:永興等地區(qū)。永興做網(wǎng)站價(jià)格咨詢(xún):18980820575

另外就是調(diào)用的函數(shù)要線程安全, thread-safe.具體那些函數(shù)線程安全,需要查閱手冊(cè)。

單片機(jī)C語(yǔ)言設(shè)計(jì)里說(shuō)的可重入函數(shù)是什么?和不可重入函數(shù)的區(qū)別是什么?

一、可重入函數(shù)

1)什么是可重入性?

可重入(reentrant)函數(shù)可以由多于一個(gè)任務(wù)并發(fā)使用,而不必?fù)?dān)心數(shù)據(jù)錯(cuò)誤。相反, 不可重入(non-reentrant)函數(shù)不能由超過(guò)一個(gè)任務(wù)所共享,除非能確保函數(shù)的互斥(或者使用信號(hào)量,或者在代碼的關(guān)鍵部分禁用中斷)??芍厝?函數(shù)可以在任意時(shí)刻被中斷,稍后再繼續(xù)運(yùn)行,不會(huì)丟失數(shù)據(jù)??芍厝牒瘮?shù)要么使用本地變量,要么在使用全局變量時(shí)保護(hù)自己的數(shù)據(jù)。

2)可重入函數(shù):

不為連續(xù)的調(diào)用持有靜態(tài)數(shù)據(jù)。

不返回指向靜態(tài)數(shù)據(jù)的指針;所有數(shù)據(jù)都由函數(shù)的調(diào)用者提供。

使用本地?cái)?shù)據(jù),或者通過(guò)制作全局?jǐn)?shù)據(jù)的本地拷貝來(lái)保護(hù)全局?jǐn)?shù)據(jù)。

如果必須訪問(wèn)全局變量,記住利用互斥信號(hào)量來(lái)保護(hù)全局變量。

絕不調(diào)用任何不可重入函數(shù)。

3)不可重入函數(shù):

函數(shù)中使用了靜態(tài)變量,無(wú)論是全局靜態(tài)變量還是局部靜態(tài)變量。

函數(shù)返回靜態(tài)變量。

函數(shù)中調(diào)用了不可重入函數(shù)。

函數(shù)體內(nèi)使用了靜態(tài)的數(shù)據(jù)結(jié)構(gòu);

函數(shù)體內(nèi)調(diào)用了malloc()或者free()函數(shù);

函數(shù)體內(nèi)調(diào)用了其他標(biāo)準(zhǔn)I/O函數(shù)。

函數(shù)是singleton中的成員函數(shù)而且使用了不使用線程獨(dú)立存儲(chǔ)的成員變量 。

總的來(lái)說(shuō),如果一個(gè)函數(shù)在重入條件下使用了未受保護(hù)的共享的資源,那么它是不可重入的。

什么是C語(yǔ)言的可重入函數(shù)?怎么使用?

假如,main()中正在調(diào)用A()函數(shù).在此期間,有一中斷,在中斷服務(wù)程序中還要調(diào)用A().

如果這個(gè)A()可以被調(diào)用就算是可重入

反之算不可重入.

可重入與不可重入的區(qū)別在這個(gè)函數(shù)的內(nèi)容是否會(huì)相互沖突...例如A()中有個(gè)靜態(tài)變量...就不可以..

當(dāng)前標(biāo)題:c語(yǔ)言open函數(shù)可重入 c語(yǔ)言opendir函數(shù)
分享鏈接:http://muchs.cn/article32/doshhpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)站維護(hù)、ChatGPT、外貿(mào)網(wǎng)站建設(shè)、

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)