歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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