婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > linux創建線程之pthread_create的具體使用

linux創建線程之pthread_create的具體使用

熱門標簽:地圖標注需要現場嗎 鶴壁電銷外呼系統怎么安裝 地圖標注企業名稱侵權案件 繽客網注冊時地圖標注出不來 工廠位置地圖標注 企業400電話辦理哪正規 400電話辦理哪家好廠商 網站上插入地圖標注內容 重慶營銷外呼系統排名

pthread_create函數

函數簡介

  pthread_create是UNIX環境創建線程函數

頭文件

  #include<pthread.h>

函數聲明

  int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg);

返回值

  若成功則返回0,否則返回出錯編號

參數

  第一個參數為指向線程標識符的指針。

  第二個參數用來設置線程屬性。

  第三個參數是線程運行函數的地址。

  最后一個參數是運行函數的參數。

注意

  在編譯時注意加上-lpthread參數,以調用靜態鏈接庫。因為pthread并非Linux系統的默認庫。

pthread_join函數

函數簡介

  函數pthread_join用來等待一個線程的結束。

函數原型為:

  extern int pthread_join __P (pthread_t __th, void **__thread_return);

參數:

  第一個參數為被等待的線程標識符

  第二個參數為一個用戶定義的指針,它可以用來存儲被等待線程的返回值。

注意

    這個函數是一個線程阻塞的函數,調用它的函數將一直等待到被等待的線程結束為止,當函數返回時,被等待線程的資源被收回。如果執行成功,將返回0,如果失敗則返回一個錯誤號。

例子:

#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>

/* 聲明結構體 */
struct member
{
  int num;
  char *name;
};

/* 定義線程pthread */
static void * pthread(void *arg)
{
  struct member *temp;

  /* 線程pthread開始運行 */
  printf("pthread start!\n");

  /* 令主線程繼續執行 */
  sleep(2);

  /* 打印傳入參數 */
  temp = (struct member *)arg;
  printf("member->num:%d\n",temp->num);
  printf("member->name:%s\n",temp->name);

  return NULL;
}

/* main函數 */
int main(int agrc,char* argv[])
{
  pthread_t tidp;
  struct member *b;

  /* 為結構體變量b賦值 */
  b = (struct member *)malloc(sizeof(struct member));
  b->num=1;
  b->name="mlq";

  /* 創建線程pthread */
  if ((pthread_create(&tidp, NULL, pthread, (void*)b)) == -1)
  {
    printf("create error!\n");
    return 1;
  }

  /* 令線程pthread先運行 */
  sleep(1);

  /* 線程pthread睡眠2s,此時main可以先執行 */
  printf("mian continue!\n");

  /* 等待線程pthread釋放 */
  if (pthread_join(tidp, NULL))
  {
    printf("thread is not exit...\n");
    return -2;
  }

  return 0;
}

編譯與執行結果

    編譯與執行結果如下圖所示,可以看到主線程main和線程pthread交替執行。也就是說是當我們創建了線程pthread之后,兩個線程都在執行,證明創建成功。另外,可以看到創建線程pthread時候,傳入的參數被正確打印。


到此這篇關于linux創建線程之pthread_create的具體使用的文章就介紹到這了,更多相關linux pthread_create內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

標簽:鹽城 東莞 棗莊 96 克拉瑪依 常州 日照 渭南

巨人網絡通訊聲明:本文標題《linux創建線程之pthread_create的具體使用》,本文關鍵詞  linux,創建,線程,之,pthread,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《linux創建線程之pthread_create的具體使用》相關的同類信息!
  • 本頁收集關于linux創建線程之pthread_create的具體使用的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 黄骅市| 广安市| 武冈市| 区。| 五寨县| 个旧市| 井研县| 宜兴市| 博野县| 仪陇县| 河北区| 黑水县| 长宁县| 甘南县| 福建省| 南靖县| 漳平市| 永川市| 吐鲁番市| 三原县| 蕲春县| 稻城县| 沽源县| 乐至县| 红桥区| 滨州市| 淮安市| 宣恩县| 汕头市| 诸城市| 台南市| 会泽县| 万安县| 上思县| 新源县| 南汇区| 安泽县| 新邵县| 都匀市| 斗六市| 卢龙县|