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)没有其他动作。