ProtothreadsC 語言封裝的輕量線程環(huán)境
Protothreads 是一種針對 C 語言封裝后的宏函數(shù)庫,為 C 語言模擬了一種無堆棧的輕量線程環(huán)境,能夠?qū)崿F(xiàn)模擬線程的條件阻塞、信號量操作等操作系統(tǒng)中特有的機制,從而使程序?qū)崿F(xiàn)多線程操作。
每個 Protothreads 線程僅增加 10 行代碼和 2 字節(jié)RAM的額外硬件資源消耗。對于資源緊缺而不能移植嵌入式操作系統(tǒng)的嵌入式系統(tǒng),使用 Protothreads 能夠方便直觀地設計多任務程序,能夠?qū)崿F(xiàn)用線性程序結(jié)構(gòu)處理事件驅(qū)動型程序和狀態(tài)機程序,簡化了該類程序的設計。
示例代碼:
#include "pt.h"
struct pt pt;
struct timer timer;
PT_THREAD(example(struct pt *pt))
{
PT_BEGIN(pt);
while(1) {
if(initiate_io()) {
timer_start(&timer);
PT_WAIT_UNTIL(pt,
io_completed() ||
timer_expired(&timer));
read_data();
}
}
PT_END(pt);
}
評論
圖片
表情
