Linux C 程式設計多線程基礎篇

來源:互聯網
上載者:User

標籤:多線程

                                 Linux C 程式設計多線程基礎篇

題記:因為 Linux 網路入侵偵測系統的設計與實現希望使用多線程,因此希望系統的學習一下 Linux C程式設計多線程的知識

注意事項:因為 pthraed 庫不是 Linux 系統預設的庫,因此在進行多線程開發的時候,需要加上標頭檔#include <pthread.h>,編譯時間要加參數 -lpthread;了;gcc thread.c -o thread -lpthread。

進程和線程:

  1. 進程是程式執行,資源分派的基本單位,每個進程都擁有自己的資料區段,程式碼片段,堆棧段,在進行進程切換時有比較複雜的環境切換

  2. 線程是進程獨立的一條運行路線,是處理器調度的最小單位,也稱為輕量級進程,可以對進程的記憶體空間,資源進行訪問,並與該進程其它線程共用記憶體空間,代碼,資源。

  3. 線程相關的執行狀態和儲存變數放線上程式控制製表中,一個進程可以有多個線程,有多個線程式控制製表及堆棧寄存器,共用一個使用者地址空間

650) this.width=650;" src="http://pic002.cnblogs.com/images/2012/350751/2012040513175742.jpg" alt="2012040513175742.jpg" />

重要名詞:

線程標識:線程 ID,進程 ID 在整個系統中是唯一的,線程 ID,只在所屬進程的環境中有效;線程標識使用資料結構 pthread_t 表示;pthread_t 不能作為整數處理,Linux 使用無符號長整形數表示pthread_t.

重要函數:

  1. pthread_self()

函數原型:pthread_t phtread_self(void)

參數:無

傳回值:(正在)調用線程的線程 ID

2. pthread_equal()

函數原型:int pthread_equal(pthread_t tidOne,pthread_t tidTwo)

參數:2 個 線程 ID

傳回值:相等則返回非 0 值,否則返回 0

#include <stdio.h>#include <stdlib.h>#include <pthread.h>int main(){   pthread_t thisId;   thisId = pthread_self();   printf("當前線程 ID = %lu.\n",thisId);   if(pthread_equal(thisId,pthread_self())){       printf("Yes,equal\n");   }else{       printf("No,not equal\n");}   return 0;}

3. 建立線程

  • 調用該線程函數的進入點

  • 使用函數 pthread_create(),建立線程後,就開始運行相關線程函數

函數 pthread_create()

函數原型:int pthread_create(pthread_t *thread,pthread_attr_t *attr,void*(*start_routine)(void *),void *arg);

參數:thread:線程標識;attr 線程屬性設定,通常設為 NULL;start_routine:線程函數的起始地址,是一個指向 void 的指標作為參數和傳回值的函數指標;arg:傳遞給 start_runtine 的函數

傳回值:成功返回 0,失敗返回失敗碼 

pthread_create(&tid,NULL,thrd_func,NULL)

本文出自 “SuperHakce” 部落格,請務必保留此出處http://superhakce.blog.51cto.com/6671637/1899141

Linux C 程式設計多線程基礎篇

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.