Linux之執行緒學習筆記

2021-09-16 11:58:32 字數 2182 閱讀 8338

在linuxc中,建立程序fork(),建立執行緒pthread_creat()。使用者在建立程序時,系統要為其分配記憶體空間(**段,堆,棧等),建立執行緒不開闢記憶體空間,執行緒是程序中的一條執行路徑,執行緒之間共享程序的記憶體。

執行緒是作業系統能夠進行運算排程的最小單位。它被包含在程序之中,是程序中的實際運作單位。一條執行緒指的是程序中乙個單一順序的控制流,乙個程序中可以併發多個執行緒,每條執行緒並行執行不同的任務。在unix和類unix作業系統中線程也被稱為輕量級程序(lightweight processes),但輕量級程序更多指的是核心執行緒(kernel thread),而把使用者執行緒(user thread)稱為執行緒。

建立: int pthread_create(pthread_t *thread, const pthread_attr_t *attr,

void *(*start_routine) (void *), void *arg);

第乙個引數:pthread_t 的指標變數,第二個引數:執行緒型別,預設為null,第三個引數:指標函式名,第四個引數:無型別指標函式變數名。

關閉: void pthread_exit(void *retval);// 引數是無型別指標的變數,變數是建立的執行緒定義的。

阻塞:int pthread_join(pthread_t thread, void **retval);

第乙個引數 :pthread_t 的指標變數,第二個引數:無型別二級指標。

鎖he條件控制//mutex&cond

初始化:pthread_cond_init();//還可以巨集定義pthread_cond_t cond = pthread_cond_initializer

pthread_mutex_init();//還可以巨集定義pthread_mutex_t mutex = pthread_mutex_initializer

銷毀:pthread_cond_destroy();  pthread_mutex_destroy();

開解鎖:  pthread_mutex_lock(); pthread_mutex_unlock();

觸發/等待:  pthread_cond_signal();pthread_cond_wait();

#include #include int g_data =0;

pthread_mutex_t mutex;

pthread_cond_t cond;

//pthread_mutex_init(&mutex,null);

//int pthread_create(pthread_t *thread, const pthread_attr_t *attr,

// void *(*start_routine) (void *), void *arg);

void *func1(void *arg)

pthread_exit((void*)ret);

void *func2(void *arg)

pthread_mutex_unlock(&mutex);

sleep(1);

}}int main()

pthread_join(t1,null);

pthread_join(t2,null);

//pthread_join(t2,(void**)&pret);

//pthread_join(t1,(void**)&pret);

printf("main:t1 quit%s\n",pret);

printf("main:%ld\n",(unsigned long)pthread_self());

pthread_mutex_destroy(&mutex);

pthread_cond_destroy(&cond);

return 0;

}

執行結果:

上面程式為各類api應用。

linux多執行緒學習筆記

1.乙個程序中的所有執行緒都可以訪問該程序的組成部件,如檔案描述符和記憶體。2.在乙個程序中採用多執行緒程式設計可以改善響應時間和提高系統吞吐量。3.程序的所有資訊對該程序的所有執行緒都是共享的,包括可執行的程式文字,程式的全域性記憶體和堆記憶體,棧以及檔案描述符。4.執行緒id用pthread t...

Linux程序執行緒學習筆記

所以,要執行乙個新程式,需要最基本的兩步 1,建立乙個可執行程式的環境,也就是程序。2,將環境中的內容替換成你所希望的,也就是用你希望執行的可執行檔案去覆蓋新程序中的原有映像,並從該可執行檔案的起始處開始執行。exec是一族函式的簡稱,包含在中它們作用都一樣,用乙個可執行檔案覆蓋程序的現有映像,並轉...

多執行緒學習筆記7之執行緒池

executors 建立執行緒池的類,提供四種執行緒池 public class callabledemo callable callable是乙個任務,類似於runnable,但是callable任務是有返回值的,一般用執行緒池去執行這個callable任務,返回乙個包含callable執行結果的...