2007年12月14日

セマフォ生成(C++)

プロセス間同期処理に使用するセマフォを生成の処理サンプルです。同期を行うには、この他にロック、アンロック、削除の処理が必要になりますが、それは追々載せますね。


#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <string.h>

int main(char** argv, int argc)
{
try
{
/* セマフォキー値 OSで一意の値です */
long lnSemKey = 0x0000ffff;
errno=0;

/* セマフォ生成 */
int iSemId = semget(lnSemKey,1,(0666|IPC_CREAT|IPC_EXCL));
if(iSemId < 0)
{
throw -1;
}

/* セマフォ構造体 */
union semun
{
int val;
struct semid_ds *buf;
ushort *array;
}arg;

//初期セマフォ数の設定
arg.val = 1;
errno=0;
if((semctl(iSemId,0,SETVAL,arg)) < 0)
{
throw -1;
}
}
catch(int r)
{
return(r);
}
return(0);
}


実行して、ipcsコマンドで確認しますと、↓になります。keyが0x0000ffffのセマフォを生成しました。

[root@localhost ttt]# ipcs -s

------ Semaphore Arrays --------
key semid owner perms nsems
0x4d0014cc 0 work 600 8
0x00000000 65537 nobody 600 1
0x00000000 98306 nobody 600 1
0x00000000 131075 nobody 600 1
0x0000ffff 163844 root 666 1
posted by 台北猫々 at 22:45| Comment(0) | TrackBack(0) | 技術メモ(Linux C/C++)

「宇宙の果て」考察1

 この間、深夜テレビで「芸能界宇宙部」というのをやっているのを見ました。その中で、「宇宙の果て」がどうなっているかを芸能人に学者先生がレクチャーしていました。

(1)学者先生曰く「宇宙の果てというのは、各人の持つ知識・認識次第なので、"あなたの宇宙の果て"と"私の宇宙の果て"は異なります。」

(2)これに対して出演者の一人の山本モナさん曰く「それは、言葉遊びではないですか?宇宙の果てというのは、存在しているのですよね?それは、どういうものなのですか?」

(1)に戻る。以降、話は噛み合わないままループ。

※ニュアンスが異なるかもしれませんが、大体こんなところでした。

学者先生が言っているのは量子論から導かれる「人間原理」(「多解釈世界」もかな?)を核としていますよね。量子論は日常の感覚とは相当ギャップがあるので、山本モナさんの反応は至極自然です。また、学者先生も論理展開がちょっと強引かな?と思いました。

私的には山本モナさんに、こう聞いて欲しかった。
「それでは、人間が誰もいなくなったら宇宙の果ては存在しないのですか?」
と、もしくは、
「それでは、人間がいなくなったら地球は回らないのですか?」と。

その問いに対する学者先生の回答を聞きたかった。

というのも、以前にブログ上で「量子論に思うこと」を書きました。

これは、宇宙という「果て」をイメージできないものと似たようなものがあるかなと思った時に、気づいたのが「人が夜見る夢」がそうだと思ったのです。

「夢の果て」って想像できますか?「夢」は人が思うほど広がり、そして「夢の外側」というのは「有るけど無い」と言う表現がしっくりくるかなと思うのです。

・・・・長くなったので続きます。猫
posted by 台北猫々 at 21:19| Comment(0) | TrackBack(0) | 雑記メモ