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);
}
 
                    
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号