(轉)Live555單線程原理

來源:互聯網
上載者:User

標籤:

1. 概述

      在live555-Server庫中,使用單線程實現了多使用者請求視頻資料,這似乎多線程才能實現的功能,並且使用者請求視頻資料各個流程銜接的都十分完美,其執行效率非常高。

      live555是如何?單線程的?其動力系統有什麼借鑒的地方?

 

 

2. 動力系統原理

一個無關的話題:

      某人A有一堆任務要辦理,但他一次只能辦理一個任務(單線程),有時辦理某一件任務會引發其他任務,有時別人還會繼續交代任務,而且任務有先後和輕重緩急之分。A如何將任務按照一定的規則辦理完畢。

 

A的安排如下:

      將每一件獨立的任務寫在一個紙條上面,放入管理器中,每次從管理器中取一個最為緊急的紙條辦理;當辦理的任務引發了其他任務,則新寫一個紙條放入管理器中;如果有人交代新的任務,也新寫一個紙條放入管理器中。A在管理器中取紙條前,必須先問下有沒有人給他安排新的任務,這樣A就能及時接受別人安排的任務。

 

A的基本過程如:

 

      這樣對A處理的每一個任務有一個嚴格要求,就是任務處理時間短,不能在處理任務的過程中等待或者睡覺。

任務的基本操作:

 

      對於放入列表中的任務,每次取出任務前需要同步任務,並不是按順序取出的。

 

對應關係如下:

主題迴圈對應BasicTaskScheduler::SingleStep函數。

1. 詢問是否有人安排任務:

      選擇socket部分,select函數。這邊需要瞭解select函數的使用。

2.工作管理員對應fDelayQueue變數,在管理器中取任務處理對應fDelayQueue.handleAlarm()

3. 放任務到管理器中對應

      envir().taskScheduler().scheduleDelayedTask函數

 

對於live555有什麼其他疑問,請發郵件到[email protected],我們大家一塊討論。

轉自:http://blog.csdn.net/wjh_monkey/article/details/42024427

(轉)Live555單線程原理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.