C語言建立執行緒以及使用鎖進行讀寫分離

2022-02-23 15:07:35 字數 1443 閱讀 6067

執行緒的相關操作放在中。

1.1我們定義乙個執行緒,首先要進行定義乙個函式,類似我們建立乙個a執行緒

void *thread_a(void *in)
1.2.建立乙個執行緒

pthread_t a;//宣告

pthread_create(&a,null,thread_a,(void*)0);//建立執行緒

1.3.建立3個執行緒並且列印(如果你列印1000個,並且睡一秒,會發現,這個程序實際上執行是無序的)

#include #include void *thread_a(void *in)

void *thread_b(void *in)

void *thread_c(void *in)

int main()

3.如果我們希望執行緒進行列印順序為c,b,a,那麼我們可以定義乙個訊號。

執行緒a等待執行緒2的訊號,執行緒2等待執行緒3的訊號

#include #include #include //sem_wait sem_init這些方法全在裡面

sem_t sem1;

sem_t sem2;

void *thread_a(void *in)

void *thread_b(void *in)

void *thread_c(void *in)

int main()

2.1.mutex互斥鎖的建立

互斥鎖的內容:我們要想建立乙個互斥鎖,首先是對這個mutex進行初始化操作。

互斥鎖的標頭檔案在中。

pthread_mutex_t mutex;//宣告乙個鎖

pthread_mutex_lock(&mutex);

pthread_mutex_unlock(&mutex);

//加鎖和解鎖操作

pthread_mutex_destory(&mutex);//銷毀鎖的操作

2.2.編寫乙個讀寫(執行緒分離)的程式,讀乙個空串,然後寫進另乙個陣列裡面

#include #include #include #include pthread_mutex_t mutex;

char buf[80],buf1[80];

int n,buf_has_item=0;

void writer_function(void)

pthread_mutex_unlock(&mutex);

}}void reader_function(void)

pthread_mutex_unlock(&mutex);

}

}

void *thread_reader(void *in)

int main()

C 建立 讀以及寫檔案操作

1.建立檔案 根路徑自己決定,如果是乙個專案一定有相關的api獲取該專案所在硬碟的完整物理路徑。建立檔案時一般先會判斷是否存在指定的檔案,沒有則建立,執行以下 後可檢視d盤根路徑。string path d string filename datetime.now.tostring yyyymmdd...

C 執行緒鎖使用全功略

前兩篇簡單介紹了執行緒同步lock,monitor,同步事件eventwaithandler,互斥體mutex的基本用法,在此基礎上,我們對 它們用法進行比較,並給出什麼時候需要鎖什麼時候不需要的幾點建議。最後,介紹幾個fcl中線程安全的類,集合類的鎖定方式等,做為對執行緒同步系列的完善 和補充。l...

c 執行緒鎖,mutex lock使用

為什麼要用執行緒鎖呢.比如當乙個執行緒再修改乙個變數,另乙個執行緒在讀取那個變數,那麼讀到的值可能是乙個無法 的值,因為有可能他在讀的時候另乙個執行緒正寫到一半.由於執行緒導致的bug會比較難查詢,因此寫乙個靠譜的執行緒鎖非常重要.總結一下mutex lock相關函式 int pthread mut...