APUE学習小問題記録

1368 ワード

4.21 mkdir()

#include 

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

指定したファイルアクセス権modeは、プロセスのファイルモードバーストによってマスクが変更されます.すなわちumask()である.
mode_t数字で指定する場合は8進法、先頭0を適用する.
umask(0);
mkdir("CreatDir", 0775);

11.6.6条件変数


「条件変数自体はルームメイトの反発量で保護されています.スレッドは条件状態を変更する前に反発量をロックする必要があります.反発量はロックしてから条件を計算する必要があるからです.」
「_waitに渡される反発量は条件を保護します.呼び出し者はロックされた反発量を関数に渡します」->waitと_ロックを組み合わせて使用します.
「関数は自動的にスレッドを呼び出して待機条件のスレッドリストに配置し、反発量をロック解除します」->_wait計算条件の場合,反発量はunlock状態である.条件が満たされていない場合、スレッドは停止し、CPUサイクルを占めません.
「_waitが戻ると、反発量が再びロックされます.」
pthread_cond_timedwait();
pthread_cond_wait();  _signal(),_broadcast(), , _lock 。

_Signal()は少なくとも1つのスレッドを起動し、broadcast()すべてのスレッドを起動
pthread_cond_wait()はpthread_とmutexを組み合わせて使用します.pthread_cond_wait()関数はwait状態に入ると自動的にrelease mutexをreleaseします.他のスレッドが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に戻る)動作はありません.