快速业务通道

unix高级环境编程---11章 线程 学习

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-06

零散知识.

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("%sn", 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){ 拥有帝国一切,皆有可能。欢迎访问phome.net
printf("thread 1 returningn");
return ((void* )1);

}

void *thr_fn2(void *arg){
printf("thread 2 exitingn");
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:%sn", strerror(err));
}
err = pthread_create(&tid2, NULL, thr_fn2, NULL);
if( err!=0){
printf("can''t create thread 2:%sn", strerror(err));
}
err = pthread_join(tid1, &tret);
if(err!=0){
printf("can''t join with thread 1:%sn", strerror(err));

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

本文出自 “今年我们二十三四” 博客,请务必保留此出处http://no001.blog.51cto.com/1142339/541779

拥有帝国一切,皆有可能。欢迎访问phome.net

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号