多執行緒筆記

2021-07-03 06:25:28 字數 2707 閱讀 5427

1、stdin_fileno

在unix一些系統呼叫中使用到stdin_fileno表示標準輸入,stdout_fileno表示標準輸出,stderr_fileno表示標準出錯,使用時需要加標頭檔案

在unix下還有stdin,stdout,stderr表示同樣的含義。

stdin_fileno與stdin的區別:

stdin_fileno:

1).資料型別:int

2).層次:系統級的api,是乙個檔案控制代碼,定義在中。

3).相應的函式:open(),close(),read(),write(),lseek()等系統級別的函式。

sdtin:

1).資料型別:file *

2).層次:c語言的提供的標準輸入流。c語言標準庫封裝系統函式實現。高階的輸入輸出函式。可在中找到外部宣告。

3).相應的函式:fopen(),fclose(),fread(),fwrite(),fseek()等c語言標準函式。

2、signal訊號處理函式

表頭檔案#include

功 能:設定某一訊號的對應動作

函式原型:void (*signal(int signum,void(* handler)(int)))(int);

或者:typedef void (*sig_t)( int );

sig_t signal(int signum,sig_t handler);

引數說明

第乙個引數signum指明了所要處理的訊號型別,它可以取除了sigkill和sigstop外的任何一種訊號。

第二個引數handler描述了與訊號關聯的動作,它可以取以下三種值:

(1)乙個無返回值的函式位址

此函式必須在signal()被呼叫前申明,handler中為這個函式的名字。當接收到乙個型別為signum的訊號時,就執行handler 所指定的函式。這個函式應有如下形式的定義:

void func(int sig);

(2)sig_ign

這個符號表示忽略該訊號,執行了相應的signal()呼叫後,程序會忽略型別為sig的訊號。

(3)sig_dfl

這個符號表示恢復系統對訊號的預設處理。

函式說明

signal()會依引數signum 指定的訊號編號來設定該訊號的處理函式。當指定的訊號到達時就會跳轉到引數handler指定的函式執行。當乙個訊號的訊號處理函式執行時,如果程序又接收到了該訊號,該訊號會自動被儲存而不會中斷訊號處理函式的執行,直到訊號處理函式執行完畢再重新呼叫相應的處理函式。但是如果在訊號處理函式執行時程序收到了其它型別的訊號,該函式的執行就會被中斷。

返回值:返回先前的訊號處理

函式指標,如果有錯誤則返回sig_err(-1)。

3、資源獨佔鎖的使用:執行緒為了訪問臨界資源而為其加上鎖,但在訪問過程中被外界取消,如果執行緒處於響應取消狀態,且採用非同步方式響應,或者在開啟獨佔鎖以前的執行路徑上存在取消點,則該臨界資源將永遠處於鎖定狀態得不到釋放。外界取消操作是不可預見的,因此的確需要乙個機制來簡化用於資源釋放的程式設計。

在posix執行緒api中提供了乙個pthread_cleanup_push()/pthread_cleanup_pop()函式對用於自動釋放資源 --從pthread_cleanup_push()的呼叫點到pthread_cleanup_pop()之間的程式段中的終止動作(包括呼叫 pthread_exit()和取消點終止)都將執行pthread_cleanup_push()所指定的清理函式。

4、#include

#include

#include

int main()

return 0;

}free(str)後指標仍然指向原來的堆位址,即你仍然可以繼續使用,但很危險,因為作業系統已經認為這塊記憶體可以使用,他會毫不考慮的將他分配給其他程式,於是你下次使用的時候可能就已經被別的程式改掉了,這種情況就叫「野指標」,所以最好free()了以後再置空

str = null;

即本程式已經放棄再使用他。 5、

int pthread_cancel(

pthread_t

thread)

#include

傳送 終止訊號給

thread

執行緒,如果成功則返回0,否則為非0值。傳送成功並不意味著thread會

終止。若是在整個

程式退出時,要終止各個執行緒,應該在成功傳送 

cancel 指令後,使用 

pthread_join 函式,等待指定的執行緒已經完全退出以後,再繼續執行;否則,很容易產生 「

段錯誤」。

int pthread_setcancelstate(int state, int *oldstate)

設定本執行緒對cancel訊號的

反應,state有兩種值:pthread_cancel_enable(

預設)和 pthread_cancel_disable,分別表示收到訊號後設為cancled狀態和忽略cancel訊號繼續執行;old_state如果不為 null則存入原來的cancel狀態以便恢復。

6、

多執行緒筆記

一.程序 就是cpu所要執行的乙個任務 自己理解的 執行緒 執行緒是乙個併發執行的順序流,乙個程序包括多個順序執行流程,這執行流程稱為執行緒 就是任務中許多的 二.執行緒排程分配cpu的時間片段給不同的執行緒,得到時間片段的執行緒被cpu執行,其他執行緒等待,執行緒排程會盡可能的分配時間片段取執行。...

多執行緒筆記

1.執行緒的建立方法 繼承thread類 實現runnable介面 重寫run方法 實現callable介面 重寫call方法 2.靜態 簡單來說,靜態 就是 物件和目標物件實現同樣的介面,物件會將目標物件傳遞進來,用目標物件來呼叫方法並新增自己的操作。new thread system.out.p...

多執行緒筆記

掌握的 1.兩種方式建立執行緒 繼承,實現 2.繼承和實現的區分 3.執行緒的生命週期 4.不同狀態下,所對應的方法。通過哪些方法,可以讓執行緒達到某個狀態。5.同步 塊,同步方法。1.學習多執行緒的原因?生活中 程式 乙個完整的功能 方法,沒有被執行 程序 乙個完整的功能 方法,被執行 執行緒 程...