多线程

线程:https://time.geekbang.org/column/article/91289

- 线程复制执行二进制指令
- 多进程缺点: 创建进程占用资源多; 进程间通信需拷贝内存, 不能共享
- 线程相关操作
    - pthread_exit(A), A 是线程退出的返回值
    - pthread_attr_t 线程属性, 用辅助函数初始化并设置值; 用完需要销毁
    - pthread_create 创建线程, 四个参数(线程对象, 属性, 运行函数, 运行参数)
    - pthread_join 获取线程退出返回值, 多线程依赖 libpthread.so
    - 一个线程退出, 会发送信号给 其他所有同进程的线程
- 线程中有三类数据
    - 线程栈本地数据, 栈大小默认 8MB; 线程栈之间有保护间隔, 若误入会引发段错误
    - 进程共享的全局数据
    - 线程级别的全局变量(线程私有数据, pthread_key_create(key, destructer)); key 所有线程都可以访问, 可填入各自的值(同名不同值的全局变量)
- 数据保护
    - Mutex(互斥), 初始化; lock(没抢到则阻塞)/trylock(没抢到则返回错误码); unlock; destroy
    - 条件变量(通知), 收到通知, 还是要抢锁(由 wait 函数执行); 因此条件变量与互斥锁配合使用
    - 互斥锁所谓条件变量的参数, wait 函数会自动解锁/加锁
    - broadcast(通知); destroy

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值