一天精通無人機第 24 講 中級篇系列:創建並運行多線程程序
歡迎關注公眾號:編程外星人
在本節中我們來主要學習創建並運行多線程的相關知識。我們知道進程與線程都是操作系統為可執行程序所提供一種可以並發執行的調度機制,它允許一個進程內可以創建多個並行執行的線程,這些線程可以與進程一樣享有其代碼段和數據段內容,只不過每一個線程都有獨立的函數棧。我們來看一下創建線程的函數:
這個pthread_create()函數是一個遵守posix標準的創建線程函數,我們來對它的幾個參數做一下簡要說明:
pthread_t *thread:線程標識符,用於對需要創建並運行的線程進行標識,也可以說是此線程的唯一描述符。
pthread_attr_t *attr:線程屬性,其中定義了線程所使用棧內存的大小,調度優先順序等等。
pthread_startroutine_t start_routine:線程運行函數入口,這是一個函數指針,用於指向一個等待運行的函數。
pthread_addr_t arg:運行參數,此線程在調用需要運行的函數start_routine時為其傳入的參數。
另外,還有幾個函數需要簡單介紹一下:
接下來我們就可以在上一節的例子的基礎上繼續編寫程序,創建一個全局變數int _run用於標識線程和進程的循環條件,並在process_test進程中創建兩個不同的線程:
再來編寫線程函數pth_run()內容:
最後重新修改process_test_main()函數通過start和stop參數來創建運行和停止進程與線程的運行:
編寫好源代碼之後,我們在nsh中執行process_test start即可以看到process_test進程和兩個線程並行運行:
同時我們可以執行top命令來查看它們的運行情況:
歡迎關注公眾號:編程外星人
推薦閱讀: