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); }