在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 透過Linux內(nèi)核看無鎖編程

            透過Linux內(nèi)核看無鎖編程

            作者: 時間:2012-05-21 來源:網(wǎng)絡 收藏

            */

            unsignedint__kfifo_put(structkfifo*fifo,

            unsignedchar*buffer,unsignedintlen)

            {

            unsignedintl;

            len=min(len,fifo->size-fifo->in+fifo->out);

            /*firstputthedatastartingfromfifo->intobufferend*/

            l=min(len,fifo->size-(fifo->in(fifo->size-1)));

            memcpy(fifo->buffer+(fifo->in(fifo->size-1)),buffer,l);

            /*thenputtherest(ifany)atthebeginningofthebuffer*/

            memcpy(fifo->buffer,buffer+l,len-l);

            fifo->in+=len;

            returnlen;

            }

            /*

            *__kfifo_get-getssomedatafromtheFIFO,nolockingversion

            *Notethatwithonlyoneconcurrentreaderandoneconcurrent

            *writer,youdon'tneedextralockingtousethesefunctions。

            */

            unsignedint__kfifo_get(structkfifo*fifo,

            unsignedchar*buffer,unsignedintlen)

            {

            unsignedintl;

            len=min(len,fifo->in-fifo->out);

            /*firstgetthedatafromfifo->outuntiltheendofthebuffer*/

            l=min(len,fifo->size-(fifo->out(fifo->size-1)));

            memcpy(buffer,fifo->buffer+(fifo->out(fifo->size-1)),l);

            /*thengettherest(ifany)fromthebeginningofthebuffer*/

            memcpy(buffer+l,fifo->buffer,len-l);

            fifo->out+=len;

            returnlen;

            }

            以上代碼摘自2。6。10,通過代碼的注釋(斜體部分)可以看出,當只有一個消費者和一個生產(chǎn)者時,可以不用添加任何額外的鎖,就能達到對共享數(shù)據(jù)的訪問。

            總結

            通過對比2。4和2。6代碼,不得不佩服開發(fā)者的智慧,為了提高內(nèi)核性能,一直不斷的進行各種優(yōu)化,并將業(yè)界最新的lock-free理念運用到內(nèi)核中。

            在實際開發(fā)過程中,進行無鎖設計時,首先進行場景分析,因為每種無鎖方案都有特定的應用場景,接著根據(jù)場景分析進行數(shù)據(jù)結構的初步設計,然后根據(jù)先前的分析結果進行并發(fā)模型建模,最后在調(diào)整數(shù)據(jù)結構的設計,以便達到最優(yōu)。

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

            linux相關文章:linux教程



            上一頁 1 2 3 4 下一頁

            評論


            相關推薦

            技術專區(qū)

            關閉