自用 linux下多執行緒

2021-09-24 02:41:07 字數 1738 閱讀 6815

(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下的執行緒保護,最常用的是互斥鎖 條件變數 訊號量和讀寫鎖。先來試一下互斥鎖吧 多執行緒之間可能需要互斥的訪問一些全域性變數,這就需要互斥的來訪問,這些需要共享訪問的字段被稱作是臨界資源,...