歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Linux中多線程的實現

Linux中多線程的實現

日期:2017/3/1 9:47:45   编辑:Linux編程

所謂的多線程就是多個函數同時執行。一般將線程表述為一個api加一個函數。線程函數有特定的格式要求,以便系統自動調用。

Windows進程包含多個線程,進程是分配資源(包括CPU)的最小單位,而線程是調度的最小單位。

Linux中的進程和線程關系應該和Windows一樣,而且在Linux中創建多線程程序和Windows一樣簡單。

下面是一個多線程實例,程序流程是這樣的:

  1. 進程啟動,創建一個線程
  2. 線程和主進程都每個一段時間輸出一些信息,二者並發執行

下面的代碼編譯於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

程序執行截圖:

筆記:

  1. 編譯時必須鏈入 pthread 這個庫
  2. usleep參數是毫秒級的,sleep參數是秒級的
Copyright © Linux教程網 All Rights Reserved