java多线程编程实例 学习c 多线程编程主要用pthread还是c 11中的thread类?
学习c 多线程编程主要用pthread还是c 11中的thread类?
主要使用pthread类
1。创建一个线程
类似于pthread的uuCreate函数,前提是需要引入相应的头文件
#include<pthread。H>
2。对于进入线程的回调函数,通常需要在回调函数中写入死循环以进行某些数据处理,等等
void t_u2;callback()]{
]while(true)
{]}
]3。由于线程将访问相同的数据段或内存,因此通常需要添加一个互锁以防止访问相同的数据段
pthreadmutexut mulock
pthreadmutexuuinit(&mulock,NULL)
pthreadmutexulock(&mulock)
pthreadmutexuunlock(&mulock);
4。死循环将导致崩溃,因此您需要在死循环中添加一个块,
pthreaduucondut mucond
pthreaduconduuinit(&mucond,null)
阻塞挂起时调用:
pthreaduconduwait(&mucond,&muo)阻塞唤醒时调用:
pthreaducondsingnal(&muo)这一点毫无疑问,因为线程锁定是资源密集型的
!那么,如何避免锁的性能下降呢?
1、从业务上避免大量锁结构
!2. 使用ThreadLocal,可以保证每个线程中的数据不会互相污染
!3. 如果读多写少,请使用读写锁
!4. 自旋锁将挑战CPU,尽管它是一个线程时间很少的锁
!5. 锁的粒度应该尽可能小:可以在方法中的锁不应该占用整个方法
java多线程编程实例 pthread实现原理 linux网络编程和多线程编程
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。