linux互斥操作——信号量

简单的互斥操作:

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<stdlib.h>
#include<sys/types.h>
#include <sys/ipc.h>
#include<sys/sem.h>

int p(int sem_id)
{
	struct sembuf sb;
	sb.sem_num=0;
	sb.sem_op=-1;
	sb.sem_flg=SEM_UNDO;
	if(semop(sem_id,&sb,1)==-1)
		return 0;
	return 1;
}
int v(int sem_id)
{
	struct sembuf sb;
	sb.sem_num=0;
	sb.sem_op=1;
	sb.sem_flg=SEM_UNDO;
	if(semop(sem_id,&sb,1)==-1)
		return 0;
	return 1;
}

int main()
{
	int sem_id;
	if((sem_id=semget(IPC_PRIVATE,1,0)) == -1)
		exit(-1);
	p(sem_id);
                //do something
	v(sem_id);

}

 

posted on 2012-04-18 22:48  wps712  阅读(256)  评论(0编辑  收藏  举报

导航