160 關於執行緒與任務

2021-09-29 14:48:36 字數 856 閱讀 2334

執行緒,thread,可能並不是乙個具有固定定義的概念。拋開其他的os不說,單純從freertos的資訊中看看thread究竟具有什麼屬性。

這裡面有一部分關於thread的描述,其中描述到了單核mcu。在單核mcu上,某一時刻只能夠有乙個thread在執行。究竟是哪乙個執行緒在執行,這取決於核心的管理。核心通過檢查執行緒的優先順序來決定究竟哪個執行緒該執行。而高優先順序的執行緒會優先得到執行的機會,因此軟體設計中的乙個初步原則可能是:硬實時性需求的優先順序高,軟實時性的優先順序低。但是實際的工程實踐中,硬實時性以及軟實時性肯定能不是乙個優先順序就可以解決的乙個問題。

上面這段描述中可以看出,其實,在freertos的描述中,task以及thread其實是一回事兒。一般來說,描述中可能會用任務多於執行緒,因為其他領域中線程可能還有其他的含義。

關於任務。

freertos中的task就是c語言實現的函式,不同的是對其原型有要求。返回值必須為空,而且需要傳入乙個void型別指標。通常,是乙個永不退出的無限迴圈。

如果乙個task不需要繼續執行了,必須顯式地將其刪除。乙個task也可以去建立任意數目的task。而任務本身也有多種狀態,執行、不執行算是最為粗曠的兩類。而不執行其實還有好幾種子狀態。

以上算是從官方書籍中的提綱中提取出來的部分資訊,算是對執行緒以及任務這個概念做乙個最基礎的了解。

關於執行緒任務執行排序

例如 有執行緒a b c三個執行緒,請按照a b c執行列印語句 description 執行緒池佇列形式實現,先進先出原則 package com.cpo classname threadexcutorscort author cp date 2020 5 18 11 11 version 1.0...

關於執行緒池任務報錯的處理與理解

說說我對第一篇文章的理解 業務中線程池裡的任務應該是在不斷迴圈消費資料,且執行緒池是單執行緒的.該執行緒池的任務對資料做簡單處理就交給另乙個執行緒池做處理.任務的 不能報錯,否則會中斷並結束任務.任務一直在,執行緒池就不會走到waiting,而是runnable狀態.若 報錯,執行緒池的proces...

簡要分析任務與執行緒池

說執行緒還是任務,我們都不可避免的要討論下執行緒池,然而在.net 4.0以後,執行緒池引擎考慮了未來的擴充套件性,已經充分利用多核微處理器 架構,只要在可能的情況下,我們應該盡量使用task,而不是執行緒池。首先看一下task的結構 從圖中我們可以看出task.factory.startnew 貌...