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 (внешнее изменение)
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki