POSIX线程:初识

线程的优势

  1. 典型的UNIX进程可以看做一个线程,一个进程在某一时刻只做一件事,有了多个控制线程后就可以并行处理任务
  2. 多个进程间通信(IPC)要借助操作系统复杂的机制才能实现内存和文件描述符的共享
  3. 同过多个线程分解任务可以提高整个程序的性能

    线程标识

    pthread_t tid 数据类型来表示线程ID,实现的时候可以使用一个结构来代表,因此需要一个函数来对两个线程ID进行比较
    #include <pthread.h>
    int pthread_equals(pthread_t tid1, pthread_t tid2);
                                                                              返回值:若相等,返回非0;否则返回0复制代码

用结构pthread_t 表示线程ID的后果是不能以一种可移植的方式打印线程id

#include<prhead.h>
pthread_t pthread_self(void);
                              返回值:调用线程的线程ID复制代码

线程控制原语

线程创建

在传统的UNIX进程模型中,每个进程只有一个控制线程,在POSIX线程的情况下,程序运行时也是以单个进程中的单个控制线程启动的,新的线程可以调用pthread_create函数创建

#include <pthread.h>
int pthread_create(
    pthread_t *restrict tid, 
    const pthread_attr_t *restrict attr,
    void(*strart_rtn)(void *), 
    void *restrict arg
);
    返回值:若成功,返回0;否则,返回错误编号复制代码

pthread_create调用成功时,新创建的线程ID会被设置成tid指向的内存位置.
attr用于控制线程的属性,可以传递NULL,使用默认线程属性.
线程创建成功后,会从start_trn处开始运行,改函数的参数通过arg传递

线程创建时并不能保证哪个线程先运行

转载于:https://juejin.im/post/59feba8af265da4321536ba0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值