APUE学习小问题记录

4.21 mkdir()

#include <sys/stat.h>

int mkdir(const char *pathname, mode_t mode);

所指定的文件访问权限mode有进程的文件模式闯将屏蔽字修改。即umask();

mode_t 用数字指定时应用八进制,前导0;

umask(0);

mkdir("CreatDir", 0775);


11.6.6 条件变量

“条件变量本身室友互斥量保护的。线程在改变条件状态之前必须先锁住互斥量。因为互斥量必须在锁定以后才能计算条件。”

“传递给_wait的互斥量对条件进行保护。调用者把锁住的互斥量传给函数。”-> _wait 和 _lock配合使用。

“函数然后自动吧调用线程放到等待条件的线程列表上,对互斥量解锁。”-> _wait 计算条件时,互斥量是unlock状态。若条件不满足,则线程挂起,不占任何CPU周期。

“_wait 返回时,互斥量再次被锁住。”

pthread_cond_timedwait();
pthread_cond_wait(); 还包括_signal(),_broadcast(),在这些函数操作之前,都要_lock互斥量。

_signal()至少唤醒一个线程,_broadcast()唤醒全部线程

pthread_cond_wait()   必须与pthread_mutex 配套使用。pthread_cond_wait() 函数一进入wait状态就会自动release mutex。当其他线程通过 pthread_cond_signal() pthread_cond_broadcast ,把该线程唤醒,使 pthread_cond_wait()通过(返回)时,该线程又自动获得该mutex 

深入理解pthread_cond_wait、pthread_cond_signal


pthread_mutex_destroy()用于注销一个互斥锁,API定义如下: int pthread_mutex_destroy(pthread_mutex_t *mutex) 销毁一个互斥锁即意味着释放它所占用的资源,且要求锁当前处于开放状态。由于在Linux中,互斥锁并不占用任何资源,因此LinuxThreads中的pthread_mutex_destroy()除了检查锁状态以外(锁定状态则返回EBUSY)没有其他动作。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值