所謂的多線程就是多個函數同時執行。一般將線程表述為一個api加一個函數。線程函數有特定的格式要求,以便系統自動調用。
Windows進程包含多個線程,進程是分配資源(包括CPU)的最小單位,而線程是調度的最小單位。
Linux中的進程和線程關系應該和Windows一樣,而且在Linux中創建多線程程序和Windows一樣簡單。
下面是一個多線程實例,程序流程是這樣的:
下面的代碼編譯於Ubuntu 10.0.4:
thread.cpp源代碼:
#include <stdio.h> // printf
#include <pthread.h> // pthread_create
#include <stdlib.h> // exit
#include <unistd.h> // usleep
void * thread( void * par){// 線程函數
int i;
for( i = 0; i < 30; i ++){
printf( "This is a pthread.\n");
usleep( 1000);
}
return 0;
}
int main(void){
pthread_t id;
int i,ret;
ret = pthread_create( &id, NULL, thread, NULL);// 創建一個線程
if( ret != 0){
printf( "Create pthread error!\n");
exit( 1);
}
for( i = 0; i < 30; i ++){// 和創建的線程並發執行
printf( "This is the main process.\n");
usleep( 330);
}
pthread_join( id, NULL); // 等待tid為id的線程退出執行
return( 0);
}
makefile內容:
thread: thread.cpp
g++ thread.cpp -lpthread -o thread
程序執行截圖:
筆記: