linux 讀寫鎖應用例項

2021-06-21 14:41:45 字數 2016 閱讀 8589

/*使用讀寫鎖實現四個執行緒讀寫一段程式的例項,共建立了四個新的執行緒,其中兩個執行緒用來讀取資料,另外兩個執行緒用來寫入資料。在任意時刻,如果有乙個執行緒在寫資料,將阻塞所有其他執行緒的任何操作。*/

#include

#include

#include

#include

#include

static pthread_rwlock_t rwlock;//讀寫鎖物件

#define work_size 1024

char work_area[work_size];

int time_to_exit;

void *thread_function_read_o(void *arg);//讀執行緒1

void *thread_function_read_t(void *arg);//讀執行緒2

void *thread_function_write_o(void *arg);//寫執行緒1

void *thread_function_write_t(void *arg);//寫執行緒2

int main(int argc,char *argv)

res = pthread_create(&a_thread, null, thread_function_read_o, null);//create new thread建立執行緒

if (res != 0)

res = pthread_create(&b_thread, null, thread_function_read_t, null);//create new thread

if (res != 0)

res = pthread_create(&c_thread, null, thread_function_write_o, null);//create new thread

if (res != 0)

res = pthread_create(&d_thread, null, thread_function_write_t, null);//create new thread

if (res != 0)

res = pthread_join(a_thread, &thread_result);//等待a_thread執行緒結束           

if (res != 0)

res = pthread_join(b_thread, &thread_result);           

if (res != 0)

res = pthread_join(c_thread, &thread_result);           

if (res != 0)

res = pthread_join(d_thread, &thread_result);           

if (res != 0)

pthread_rwlock_destroy(&rwlock);//銷毀讀寫鎖               

exit(exit_success);

}void *thread_function_read_o(void *arg)

}   

pthread_rwlock_unlock(&rwlock);   

time_to_exit=1;

pthread_exit(0);

}void *thread_function_read_t(void *arg)

}pthread_rwlock_unlock(&rwlock);   

time_to_exit=1;

pthread_exit(0);

}void *thread_function_write_o(void *arg)

pthread_rwlock_unlock(&rwlock);

pthread_exit(0);

}void *thread_function_write_t(void *arg)

pthread_rwlock_unlock(&rwlock);//解鎖

pthread_exit(0);

}

linux讀寫鎖應用

思路 linux多執行緒時,資料空間為公共,乙個執行緒去新增資料,乙個執行緒去修改資料,這個時候需要加入互斥鎖,倆個執行緒如果同時去處理這個資料空間,資料會出錯,除了執行緒鎖之外,學習了乙個讀寫鎖 詳細函式說明 核心函式 初始化讀寫鎖 pthread rwlock init 寫入讀寫鎖中的鎖 pth...

linux程序讀寫鎖

讀寫鎖比mutex有更高的適用性,可以多個執行緒同時占用讀模式的讀寫鎖,但是只能乙個執行緒占用寫模式的讀寫鎖。1.當讀寫鎖是寫加鎖狀態時,在這個鎖被解鎖之前,所有試圖對這個鎖加鎖的執行緒都會被阻塞 2.當讀寫鎖在讀加鎖狀態時,所有試圖以讀模式對它進行加鎖的執行緒都可以得到訪問權,但是以寫模式對它進行...

Linux讀寫鎖使用

讀寫鎖很早就知道了,但是使用的不多,這次 中出現了,才認真思考怎麼用。摘錄一下 讀寫鎖的特點是 當讀寫鎖是寫加鎖時,在這個鎖被解鎖之前,所有試圖對這個鎖加鎖的執行緒都會被阻塞。當讀寫鎖是讀加鎖時,在這個鎖被解鎖之前,所有試圖以讀模式對他進行加鎖的執行緒都可以得到訪問權,但是如果執行緒以寫模式對此鎖加...