在Linux中,多線程是指在一個進程中同時運行多個線程,每個線程有自己的執行流程和執行上下文,但共享進程的資源。多線程能夠提高程序的并發性和性能。
在Linux下,多線程是通過pthread庫來實現的。pthread庫提供了一套函數接口,用于創建、控制和同步線程。
以下是一個簡單的多線程實例:
#include <stdio.h>
#include <pthread.h>
// 線程函數
void* thread_func(void* arg) {
int i;
for (i = 0; i < 5; i++) {
printf("Thread: %d\n", i);
sleep(1); // 線程休眠1秒
}
return NULL;
}
int main() {
pthread_t thread;
int ret;
// 創建線程
ret = pthread_create(&thread, NULL, thread_func, NULL);
if (ret != 0) {
printf("Failed to create thread\n");
return 1;
}
// 主線程繼續執行
int i;
for (i = 0; i < 3; i++) {
printf("Main: %d\n", i);
sleep(1);
}
// 等待線程結束
pthread_join(thread, NULL);
return 0;
}
在上面的示例中,我們首先定義了一個線程函數thread_func
,這個函數會在新線程中執行。然后在main
函數中,我們使用pthread_create
函數創建了一個新線程,并傳入了線程函數thread_func
作為參數。主線程會繼續執行for
循環打印Main
,而新線程會執行for
循環打印Thread
。最后,我們使用pthread_join
函數等待新線程執行完畢。
編譯并運行上述程序,將會看到主線程和新線程交替執行的輸出。這是因為主線程和新線程是并行執行的。
需要注意的是,在多線程編程中,共享資源的訪問需要進行同步,以避免競態條件和數據不一致等問題。在實際使用中,可能還需要使用互斥鎖、條件變量等同步機制來保證線程的正確執行。