QNX 上的多執行緒程式設計

2021-08-26 04:35:18 字數 971 閱讀 9203

在qnx 文字介面程式設計除了簡單的鍵盤輸入,控制台輸出以外,還有好多重要的知識點需要學習,包括多執行緒,執行緒同步,程序通訊,資源管理器(硬體驅動)等等。

首先了解一下qnx環境下的多執行緒程式設計。qnx環境實現了多執行緒併發,多執行緒切換時的複雜處理已經由核心實現了,開發人員需要做的就是建立啟動執行緒。

在qnx下建立執行緒的方法是pthread_create方法,使用時需要匯入pthread.h標頭檔案,pthread_create方法定義如下:(再次強調,qnx的「api」文件:library reference一書很重要,從中可以找到更多細節)

int pthread_create( pthread_t* thread,

const pthread_attr_t* attr,

void* (*start_routine)(void* ),

void* arg );

看方法的定義總是不如看樣例來的容易,下面是建立執行緒的最簡單方法:

pthread_create( null, null, &mymethod, null );

其中mymethod是希望執行緒進入的方法,其它引數為空,其它引數是用於記錄執行緒id,給方法傳入引數用的,在這裡一概忽略,目的是簡化測試環境。

在我的測試**中實現如下:

void* mymethod(void* arg)

return 0;}

注意在c語言中有嚴格的編譯順序,mymethod方法的定義必須放在pthread_create(null,null,&mymethod,null);之前,否則編譯會報錯,說找不到方法mymethod.

另外,主線程在建立子執行緒後不能馬上結束,因為主線程一旦結束子執行緒就不再執行了,我的main方法實現如下,在沒有好辦法之前先通過空迴圈保證主線程不結束,後面再介紹其它正式的做法:

int main(int argc, char *argv)

}return 0; }

程式測試結果是主線程和子執行緒都在控制台迴圈輸出。

QNX 上的多執行緒程式設計

在qnx 文字介面程式設計除了簡單的鍵盤輸入,控制台輸出以外,還有好多重要的知識點需要學習,包括多執行緒,執行緒同步,程序通訊,資源管理器 硬體驅動 等等。首先了解一下qnx環境下的多執行緒程式設計。qnx環境實現了多執行緒併發,多執行緒切換時的複雜處理已經由核心實現了,開發人員需要做的就是建立啟動...

QNX多執行緒同步之Barrier 屏障

之前和大家介紹過qnx上的執行緒同步方法metux和semophore,通過這兩種方法可以對乙個或者幾個資源進行加鎖,避免資源使用上的衝突。在另一種情況下,某個執行緒需要在其它執行緒完成工作後才繼續執行,這時就需要使用到執行緒同步方法barrier。舉個現實的例子,假設有三個士兵在操作一門高炮,乙個...

QNX多執行緒同步之Barrier 屏障

之前和大家介紹過qnx上的執行緒同步方法metux和semophore,通過這兩種方法可以對乙個或者幾個資源進行加鎖,避免資源使用上的衝突。在另一種情況下,某個執行緒需要在其它執行緒完成工作後才繼續執行,這時就需要使用到執行緒同步方法barrier。舉個現實的例子,假設有三個士兵在操作一門高炮,乙個...