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,否则返回出错编号   
     返回成功时,由tidp指向的内存单元被设置为新创建线程的线程ID。
      attr参数用于制定各种不同的线程属性。
 新创建的线程从start_rtn函数的地址开始运行,该函数只有一个万能指针参数arg,
 如果需要向start_rtn函数传递的参数不止一个,那么需要把这些参数放到一个结构中,然后把这个结构的地址作为arg的参数传入。

       linux下用C开发多线程程序,Linux系统下的多线程遵循POSIX线程接口,称为pthread。   
 由 restrict 修饰的指针是最初唯一对指针所指向的对象进行存取的方法,
 仅当第二个指针基于第一个时,才能对对象进行存取。
 对对象的存取都限定于基于由 restrict 修饰的指针表达式中。
 由 restrict 修饰的指针主要用于函数形参,或指向由 malloc() 分配的内存空间。
 restrict 数据类型不改变程序的语义。 编译器能通过作出 restrict 修饰的指针是存取对象的唯一方法的假设,
 更好地优化某些类型的例程。
参数
   第一个参数为指向线程标识符的指针。   
 第二个参数用来设置线程属性。
      第三个参数是线程运行函数的起始地址。   
 最后一个参数是运行函数的参数。   
 另外,在编译时注意加上-lpthread参数,以调用静态链接库。因为pthread并非Linux系统的默认库

示例
  打印线程 IDs   
#include "apue.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(void)   
{   int err;   
      err = pthread_create(&ntid, NULL, thr_fn, NULL);   
      if (err != 0)   err_quit("can't create thread: %s\n", strerror(err));
   printids("main thread:");
   sleep(1);
   exit(0);   
}   

$ gcc main.c -lpthread   
$ ./a.out   
main thread: pid 7398 tid 3084450496 (0xb7d8fac0)   
new thread: pid 7398 tid 3084446608 (0xb7d8eb90)

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值