APUE学习小问题记录

4.21 mkdir()

#include 

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



你可能感兴趣的:(Linux)