编写多线程的一些注意
2017-11-30 17:07
113 查看
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:
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:
相关文章推荐
- 多线程的一些注意事项
- GBase编写sql的一些注意事项
- 编写nginx的http模块需要注意一些细节
- 关于安全编写代码的一些注意事项[参照msdn],这些在编程基础中都已经相当重要了!
- Linux下多线程编程的一些注意事项
- 编写C语言程序时需要注意的一些小技巧1
- 编写多线程java程序时需要注意哪些问题?(来自于effective java se)
- 类在编写过程中的一些注意事项
- 多线程要注意的一些陷阱
- css编写要注意什么 及一些公用的样式和外部引用 转码
- 在编写SQL语句时应该注意的一些小问题;
- 一些sql编写的注意点
- JAVA多线程的一些注意点
- 多线程编程的一些注意事项
- 编写Java代码一些注意点
- 编写代码时应该注意的一些地方
- DockerFile的编写和注意的一些知识点
- 做网站网页编写时应该注意的一些规范
- 从零开始攻略PHP(6)——代码重用与函数编写的一些注意事项
- iOS开发--iOS多线程操作时一些要注意的安全问题