Пример #1
0
int mysem_post(mysem_t *sem){
	struct sembuf myop[1];
	setsembuf(myop, 0, 1, 0);
	if(semop(*sem, myop, 1) == -1)
		return -1;
	return 0;
}
Пример #2
0
int mysem_post(mysem_t *sem){
	int semid;
	rewind(sem);
	while(fread(&semid, sizeof(int), 1, sem) < sizeof(int));
	struct sembuf myop[1];
	setsembuf(myop, 0, 1, 0);
	if(semop(*sem, myop, 1) == -1)
		return -1;
	return 0;
}
Пример #3
0
void sem_signal(int sem_id)
{
	setsembuf(&buf_semsignal, 0, 1, SEM_UNDO);
	r_semop(sem_id, &buf_semsignal, 1);
}
Пример #4
0
void sem_wait(int sem_id)
{
	setsembuf(&buf_semwait, 0, -1, SEM_UNDO);
	r_semop(sem_id, &buf_semwait, 1);
}