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号