Linuxシステムコール、POSIX mutex による排他制御
UNIX / Linux システムコール・プログラミング POSIX mutex による排他制御 mutex(ミューテックス)とは? mutex(ミューテックス)は、 Mut ual Ex clusion の略で訳せば相互排他となります。 Unix系のOSにはセマフォも存在していますが、セマフォとの違いとしては、 ・ミューテックスでは制御権を持てるのは1つだけ。 セマフォは複数の使用者を設定することが可能です。 セマフォで使用者を1つだけとした場合は、ミューテックスと同様の動作となります。このように0/1だけの操作となるようなセマフォ/ミューテックスはバイナリセマフォとも呼ばれます。 ・ミューテックスは所有者の概念を持っている セマフォでは、ロックするプログラムとアンロックするプログラムが別でも構わない。 (デッドロックの元になるので危険な実装なのでオススメはしない) しかし、ミューテックスでは所有者の概念があるためロックをかけた使用者しかアンロックできない。この部分がセマフォと異なる部分です。 これらの特徴から、ミューテックスはスレッド間の排他制御でよく利用されます。 ミューテックスを使ったロックは、ロック動作を行ったスレッドしかアンロックできません。 それでは、 早速コードを示します。 mutex.c #include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <ctype.h> #include <unistd.h> pthread_mutex_t mutex; void* thread(void* arg); // スレッドエントリ // // Main thread. // int main(int argc, char **argv) { int ret; const char *arg1 = "Pneumonoultramicroscopicsilicovolcanoconiosis, Pneumonoultramicr...