编写多线程的一些注意

1:线程是异步的,需要传入线程的数据,必须要在线程激活、或者在线程被创建之前赋值。绝对不要假设你的线程会等你。

2: 别将赌注压在线程竞争上。多线程竞争的因素有很多,比如处理器数量,进程的数量,以及当前的网络开销,当你开发多线程时,应该假定在任意时间点,在程序的任何语句

    内,每个线程可能睡眠一段不定的时间。

3:合作避免僵局(死锁),保证互斥量的调用顺序,不少死锁的产生是因为函数退出之前没释放互斥量。

4:避免优先级倒置,1完全避免实时调度;2涉及你的线程使不同优先级的线程使用不同的互斥量,不太可能必须某些ANSI C函数使用的互斥量;

     3使用优先级ceiling互斥量或优先级继承,这些是pthreads的可选特性,你不能为不是你建立的互斥量设置优先级协议,包括ANSI C函数的互斥量;

     4避免调用这样的函数:他可能锁住不是你创建的互斥量并提升互斥量的优先级.

5:绝不要在谓词之间共享条件变量,避免单个条件变量管理多个谓词条件。当你确实要使用谓词共享,最好使用pthread_cond_broadcast

6: pthread_cond_signal会比pthread_cond_broadcast需要线程自己处理假唤醒和拦截唤醒的问题。pthread_cond_broadcast唤醒所有条件变量阻塞的线程,然后判断谓词运行线程。

7:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小喾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值