(3)、 簡單的多執行緒示例
乙個簡單的linux多執行緒示例如下:
#include
#include
#include
#include
void *thread_function(void *arg);
char message = "hello world";
int main()
printf("waiting for thread to finish.../n");
res = pthread_join(a_thread, &thread_result);
if (res != 0)
printf("thread joined, it returned %s/n", (char *)thread_result);
printf("message is now %s/n", message);
exit(exit_failure);
}void *thread_function(void *arg)
編譯語句如下:
gcc –lpthread thread1.c -o thread1
輸出結果是:
$./thread1[輸出]:
thread_function is running. argument was hello world
waiting for thread to finish...
thread joined, it returned thank you for your cpu time!
message is now bye!
在這個例子中,pthread_exit(void *retval)本身返回的就是指向某個物件的指
針,因此,pthread_join(pthread_t th, void **thread_return);中的thread_return
是二級指標,指向執行緒返回值的指標。可以看到,我們建立的新執行緒修改的陣列
message的值,而原先的執行緒也可以訪問該陣列。如果我們呼叫的是fork而不是
pthread_create,就不會有這樣的效果了。因為fork建立子程序之後,子程序會拷貝
父程序,兩者分離,相互不干擾,而執行緒之間則是共享程序的相關資源。
<4>、多執行緒例項
(1)、建立新檔案1.multithreading.c:
/*1.multithreading.c :c multiple thread programming in linux */
#include "pthread.h"
#include
#include
#include
#include
#define max 10
pthread_t thread[2];
pthread_mutex_t mut;
int number=0, i;
void *thread1()
void *thread2()
pthread_exit(null);
}void thread_create(void)
void thread_wait(void)
if(thread[1] ==0)
}int main()
(2)、進行編譯執行:
sudo gcc 1.multithreading.c -o 1.multithreading -lpthread
./ 1.multithreading
整理自用 多執行緒之CSingleLock
總體而言 1.csinglelock主要是用於同步多個執行緒對乙個資料類的同時訪問。2.csinglelock有raii的好處。csinglelock是對鎖的乙個封裝,它的基本原理如下 下面給出的是csinglelock的建構函式和析構函式 csinglelock lock plock csingl...
linux下多執行緒程式設計
先看執行的結果 1 主函式正在建立執行緒,2執行緒1被建立 3 thread1 i m thread 1th 4執行緒2被建立 5 thread2 i m thread 2nd 6 thread2 number 0 7執行緒3被建立 8主函式正在等待執行緒結束.9 thread1 number 0 ...
Linux下多執行緒的執行緒保護
目錄 一 開發環境 二 互斥鎖 系統 ubuntu16.04 執行緒庫 pthread 語言 c c linux下的執行緒保護,最常用的是互斥鎖 條件變數 訊號量和讀寫鎖。先來試一下互斥鎖吧 多執行緒之間可能需要互斥的訪問一些全域性變數,這就需要互斥的來訪問,這些需要共享訪問的字段被稱作是臨界資源,...