Unix多线程编程技术

posix pthreads库提供了一系列的编写多线程程序的函数主要包括
1. 创建和中止线程函数
2. 同步线程和对程序资源加锁函数
3. 管理线程时序函数
一般地使用线程时序管理函数会复杂你的程序算法不仅如此在你移植你在单处
理机上的多线程程序到多处理机环境时也可能会带来麻烦所以这里不讨论它
每一个线程都可以访问到相同的全局变量和文件但每个线程也有它自己的堆栈和寄
存器
pthread_create函数
当一个程序被exec开始执行时会创建一个线程该线程称作初始线程(initial
thread)或主线程(main thread) 其他的线程使用pthread_create创建
#include <pthread.h>
int pthread_create( pthread_t *tid, const pthread_attr_t *attr,
void *(*func)(void*), void* arg);
Returns: 0 if OK, 正数Exxx value on error.
一个进程中的每个线程都有一个线程ID来标识线程ID的数据类型为pthread_t
(通常为 unsigned int ) 如果创建新线程成功它的ID通过tid指针返回
每个线程有很多属性调度优先级初始堆栈大小以daemon方式运行等等
我们可以通过pthread_attr_t变量来设定这些属性如果attr为一个空指针线程的属性
为缺省值通常情况下我们都使用缺省值
当创建一个线程的时候通常都会指定一个开始函数(start function) 线程在开
始执行时调用该函数然后线程显式地(调用pthread_exit)或隐含地(执行函数start
function返回)终止开始函数地址为func变量该函数调用时有一个指针参数arg 如果
开始函数需要多个参数必须构造一个结构把所有的参数作为结构的成员然后把
结构指针的地址作为唯一的参数传递给开始函数(start function)
注意变量func和arg 函数func有一个通用类型指针的变量(void *) 返回一个通
用类型的指针(void *) 这允许我们传递一个指针(可以指向任意类型)给线程线程返
回一个指针(指向任务类型)
通常情况下如果执行成功Pthread函数返回0 失败时返回非0 和socket函数
以及大多数的系统调用不同这些函数出错时返回1 和一个正的errno值指明失败原
因Pthread返回一个正的错误号作为返回值例如如果在调用pthread_create创建新
线程时因为超过了系统线程数的限制而失败则pthread_create返回EAGAIN
Pthread函数不使用errno变量成功返回0 失败返回一个正数的约定是考虑周到的因
为所有定义在<sys/errno.h>的出错参数Exxx的值都是正数并且0是没有使用的
pthread_join函数
调用pthread_join可以等待指定的线程终止把线程与进程相
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值