Инструменты пользователя

Инструменты сайта


dev:c:futex

futex

В linux в качестве аналога мутексов можно использовать futex (Fast Userspace Locking). Однако, в библиотеке glibc такой функции нет.

Решение

Реализуем собственный вызов системной функции futex.

futex.h

#ifndef futex_h
#define futex_h

#include <linux/futex.h>
#include <sys/time.h>

#ifdef __cplusplus
extern "C" {
#endif//__cplusplus

int futex(int * uaddr, int op, int val, const struct timespec * timeout, int * uaddr2, int val3);

#ifdef __cplusplus
}
#endif//__cplusplus

#endif//futex_h

futex.c

#include "futex.h"
#include <sys/syscall.h>

inline int futex(int *uaddr, int op, int val, const struct timespec * timeout, int *uaddr2, int val3)
{
        return syscall(SYS_futex, uaddr, op, val, timeout, uaddr2, val3);
}

Дискуссия

Enter your comment
 
dev/c/futex.txt · Последние изменения: 23.02.2010 22:12 (внешнее изменение)

Инструменты страницы