通俗解释pthread_create,以及互斥锁的应用

int   pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg)

首先要知道的是这是线程的创建,进程创建是fork()

第一个参数是你所创建的线程对象

第二个是线程的属性

  1. typedef struct

  2. {

  3. int detachstate; 线程的分离状态

  4. int schedpolicy; 线程调度策略

  5. struct sched_param schedparam; 线程的调度参数

  6. int inheritsched; 线程的继承性

  7. int scope; 线程的作用域

  8. size_t guardsize; 线程栈末尾的警戒缓冲区大小

  9. int stackaddr_set;

  10. void * stackaddr; 线程栈的位置

  11. size_t stacksize; 线程栈的大小

  12. }pthread_attr_t;

 第三个是线程所运行的函数

第四个是运行函数的实参(一般指向一个有多个成员的结构体)

pthread_mutex_t 互斥的初始化有两种方式1.静态初始化pthread_mutex_t mutex_x=PTHREAD_MUTEX_INITIALIZER;

2.动态初始化:使用init函数

区别是静态是在栈中,函数用完就消失,动态在堆中不会消失

锁的方式也有两种:int pthread_mutex_trylock(pthread_mutex_t* mutex);//非阻塞式加锁
int pthread_mutex_lock(pthread_mutex_t* mutex)//阻塞式加锁

如果一个线程既想获得锁,又不想挂起等待,可以调用pthread_mutex_trylock,如果Mutex已经被 另一个线程获得,这个函数会失败返回EBUSY,而不会使线程挂起等待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值