linux 线程库在哪里,linux线程库

简单地讲,进程是资源管理的最小单位,线程是程序执行的最小单位.一个进程至少要一个线程作为它的指令执行体,进程管理着资源(比如CPU,内存,文件等),而将线程分配到某个CPU上执行.一个进程当然可以拥有多个线程.

现在有3种不同标准的线程库:WIN32,OS/2和POSIX.(portable operating system interface standard,可移植操作系统接口标准).linux下多线程遵循POSIX接口,称为pthread.

(1)pthread_create()创建新的线程(与fork()类似)

int pthread_create(pthread_t   thread,const pthread_attr_t *attr,void *(*func)(void *),void *arg)

第一个参数是一个pthread_t型的指针用于保存线程ID,以后对该线程的操作都要用ID来标示,每个线程都有同时具有线程ID和进程ID,其中进程ID就内核所维护的进程号,而线程ID则由linuxthreads分配和维护.

第二个参数是一个pthread_attr_t的指针用于说明要创建的线程的属性,使用null表示要使用缺省的属性.

第三个参数指明线程运行函数的起始地址,是一个只有一个(void *)参数的函数.

第四个参数指明了运行函数的参数,参数arg 指向一个结构.

创建线程成功后,新创建的线程则运行参数3和参数4确定的函数,原来的线程则继续运行下一行码.

(2)pthread_join()等待线程结束

pthread_join用来挂起当前线程直到由参数thread指定和线程终止为止,

int pthread_join(pthread_t thread ,void * *status)

第一个参数为被等待的线程标识符,第二个参数为一个用户定义的指针,它可以用来存储等待线程式的返回值.

(3)pthread_t pthread_self(void)

返回本线程的ID

(4)int pthread_detach(pthread_t thread)函数返回值为整数,用于将处于连接的线程变成为脱离状态.

(5)pthread_exit(void *status)用业终止线程,status指向线程返回值的指针.

例:

1#include

2 #include

3 #include

4 void * thread_function(void * arg)

5 {

6         int i;

7         for( i=0;i<20;i++)

8         {

9                 printf(" This is a thread!\n");

10                 }

11            return NULL;

12 }

13 int main(void)

14 {

15         pthread_t mythread;

16         if( pthread_create( &mythread, NULL,thread_function, NULL))

17         {

18                 printf("error creating thread.");

19                 abort();

20         }

21 printf(" This is main process!\n") ;

22 if ( pthread_join ( mythread,NULL))

23 {

24         printf("error joining thread.");

25         abort();

26 }

27 exit(0);

28 }

编译并执行该程序:

#gcc -lpthread -o mythread mythread.c

#./mythread

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值