91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

unix高級環境編程---11章 線程 學習

發布時間:2020-05-01 01:00:27 來源:網絡 閱讀:1026 作者:zz_yun 欄目:系統運維

零散知識。

1.線程id---     進程id的類型是pid_t, 線程id的類型是pthread_t;

比較兩個線程id:

#include <pthread.h>

int pthread_equal ( pthread_t tid1, pthread_t tid2 );

獲得自身的線程id:

pthread_t pthread_self(void)

2.線程創建

int pthread_create( pthread_t *restrict tidp, const pthread_attr_t *restrict attr,

     void *(*start_rtn)(void *),  void *restrict arg );

 接下來是打印線程id的例子:

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
#include <pthread.h>
pthread_t ntid;

void printids(const char *s){
 pid_t pid;
 pthread_t tid;
 pid = getpid();
 tid = pthread_self();
 printf("%s pid %u tid %u (0x%x)\n",s, (unsigned int)pid,
   (unsigned int)tid, (unsigned int) tid);

}
void *thr_fn(void *arg){
 printids("new thread: ");
 return ((void*)0);

}

int main(){
 int err = 0;
 err = pthread_create(&ntid, NULL, thr_fn, NULL);
 //err = pthread_create(&ntid, NULL, thr_fn, NULL);
 if(err!=0){
  printf("%s\n", strerror(err) );

 }
 printids("main thread:");
 sleep(1);
 exit(0);
}
 

 

使用ubuntu,eclipse編譯,提示找不到pthread_create.  頭文件是定義了,但是沒有連接線程庫。 需要設置eclipse。 選擇工程--屬性--c、c++build--settings---gcc c linker---libraries, 添加庫 pthread。  再次編譯運行。ok。

main thread: pid 2164 tid 3079145152 (0xb78806c0)
new thread:  pid 2164 tid 3079142256 (0xb787fb70)
 

 3、線程終止

void *thr_fn1(void *arg){
 printf("thread 1 returning\n");
 return ((void* )1);

}

void *thr_fn2(void *arg){
 printf("thread 2 exiting\n");
 pthread_exit((void *)1);

}

int main(){
 int err;
 pthread_t tid1, tid2;
 void  *tret;
 err = pthread_create(&tid1, NULL, thr_fn1, NULL);
 if( err != 0){
  printf("can't create thread 1:%s\n", strerror(err));
 }
 err = pthread_create(&tid2, NULL, thr_fn2, NULL);
 if( err!=0){
  printf("can't create thread 2:%s\n", strerror(err));
 }
 err = pthread_join(tid1, &tret);
 if(err!=0){
  printf("can't join with thread 1:%s\n", strerror(err));

 }
 printf(" thread 1 exit code %d\n", (int)tret);
 err = pthread_join(tid2, &tret);
 if(err!=0){
  printf("can't join eith thread 2:%s\n", strerror(err));
 }
 printf("thread 2 exit code %d\n", (int)tret);
 exit(0);
}
 

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高碑店市| 酒泉市| 象山县| 巢湖市| 江永县| 景德镇市| 日照市| 正蓝旗| 靖远县| 锡林浩特市| 民丰县| 宜都市| 浪卡子县| 南安市| 福海县| 临西县| 黄冈市| 黔西县| 张家川| 黔东| 洞头县| 邵武市| 德州市| 华安县| 安庆市| 秦皇岛市| 东阳市| 金华市| 红桥区| 陕西省| 蒙山县| 桐乡市| 景宁| 安龙县| 莱西市| 龙胜| 德清县| 噶尔县| 兖州市| 金川县| 闽清县|