12-29-2009
Quote:
If I'm reading it right, an interlocked variable looks a lot like a linux futex
You are right. But there are some interesting differences.
A futex (fast userspace mutex) is essentially a userspace 32-bit or 64-bit address (lock) located in a shared memory region together with a matching kernel wait queue (futex queue). In the noncontended case, a lock can be acquired/released from userspace without having to enter the kernel. In the contended case, the kernel gets involved.
Implementation-wise, futexes are closer to slim reader/writer (SRW) locks than to interlocked variables.
10 More Discussions You Might Find Interesting
1. Programming
Hi all,
I am working in a UNIX/C environment. I would like to understand more about MUTEX and Threads. Can someone explain me these
concepts and how they are related.
Vijay (2 Replies)
Discussion started by: vthasan
2 Replies
2. UNIX for Dummies Questions & Answers
Can anyone explain me what mutexes are in
multithreading environment? (2 Replies)
Discussion started by: sagar
2 Replies
3. Shell Programming and Scripting
A shell in crontab per 5 min write a file
B shell in crontab per 6 min read a file
how to lock the share file a ;avioid confilict in write and read?
Thx : -) (1 Reply)
Discussion started by: zz_xm
1 Replies
4. Programming
Hi, I have two tasks 'Read' and 'Write' which reads and writes on a file "abc.txt" respectively.
Now I need to restrict the Write operation on the file while Read is going on, But can allow two Reads at a time.
ie. two Reads can happen simultaneously, but Write can't happen at Read is going on.
... (3 Replies)
Discussion started by: satheeshalle
3 Replies
5. Programming
Hi,
can someone explain me the difference between mutex and semaphores?
Thanks (1 Reply)
Discussion started by: rvan
1 Replies
6. UNIX for Dummies Questions & Answers
can u tell me what is the exact difference b/w mutex and semaphore
and what is the diff b/w counting semaphore and binary semaphore
amit (1 Reply)
Discussion started by: amitpansuria
1 Replies
7. Shell Programming and Scripting
Hello Everyone,
I just joined this forum and this is my first post.
I would like to know how can I impliment basic read/write locks in perl. I have a database (file) which can be accessed simultaneously but has to be locked while writing.
If there is no such support in perl, my next... (6 Replies)
Discussion started by: superuser84
6 Replies
8. Programming
I am trying to use mutex in my multi-tread project, but they don't seem to work.
I have created a simple demonstration of the problem. This is NOT how I would use a mutex, only a demonstration of the problem:
#include <stdio.h>
#include <pthread.h>
int main()
{
int val;
... (3 Replies)
Discussion started by: ChrisWilliams
3 Replies
9. Programming
Hi all,
I have a scenario where I need to use the mutex locks. The mutex locks are working fine, but sometimes I am getting into the dead lock situation.
Below is the summary of my code :
MUTEX LOCK
performTask();
MUTEX UNLOCK.
In some cases I get into the situation where... (2 Replies)
Discussion started by: cjjoy
2 Replies
10. Programming
Hello,
I have got some issue with the struct variable with passed arguments
the variable in the sturct is only recognize the last value their assigned to
I'm pretty confused why the mutex didn't work out
here is my program:
#include<stdio.h>
#include<pthread.h>
pthread_mutex_t lock... (3 Replies)
Discussion started by: michael23
3 Replies
LEARN ABOUT HPUX
sem_trywait
sem_wait(2) System Calls Manual sem_wait(2)
NAME
sem_wait, sem_trywait - lock a POSIX semaphore
SYNOPSIS
DESCRIPTION
is used to lock a semaphore. The calling thread will not return from its call to until one of the following events occur: it successfully
obtains a lock on the semaphore; it is interrupted by a signal or an error condition occurs.
is used to lock a semaphore, if it is available. The value of the semaphore sem is checked at some unspecified time during the call. If
the semaphore is available at the time its value is checked, the calling thread will atomically, with respect to the checking of the value,
lock the semaphore. The thread will now own a lock on the semaphore; the call will return successfully. If the semaphore is unavailable
at the time its value is checked, then the call returns -1 with errno set to EAGAIN.
If the specified semaphore referred to by sem is a named semaphore, then this semaphore must have been opened by the calling process with
The calling process must have both read and write permissions on the semaphore to perform these operations. The semaphore will be locked
upon successful return and will stay locked until it is explicitly released by a call to
To use this function, link in the realtime library by specifying on the compiler or linker command line.
EXAMPLES
The following call to will lock the semaphore sem.
The following call to will lock the semaphore sem, if it is available.
RETURN VALUE
A successful call to will return 0 and the calling thread will then own a lock on the semaphore. Otherwise, the call to will return -1
with errno set to the appropriate value of the error condition.
A successful call to will return 0, if the semaphore was available and the calling thread was able to lock the semaphore. Otherwise, the
call to will return -1 with errno set to the appropriate value of the error condition.
ERRORS
and fail and do not perform the requested operation if any of the following conditions are encountered:
[EPERM] The calling process does not have the privileges necessary to lock the semaphore.
[EAGAIN] The semaphore was not available and hence could not be locked by This error condition only occurs in
[EINVAL] The argument sem does not refer to a valid semaphore.
[EINTR] The function was interrupted by a signal
SEE ALSO
sem_post(2), <semaphore.h>.
STANDARDS CONFORMANCE
sem_wait(2)