Messages in this thread | | | Date | Mon, 24 Mar 2014 17:19:53 -0400 | Subject | Futex Question (64 bits?) | From | Ryan Nicholl <> |
| |
I would like to know if it would be possible to use a 64 bit futex call? If not, I would like to request it be added. (It is acknowledged in the manpages that it must be added eventually anyway.)
I am programming a C++11+ library. One of the constructed features is a "locking pointer". Unfortunately, pointers are usually 64 bits, while the futex call supports only 32 bits. I could not discover any documented way to invoke a 64 bit futex call.
It's unfortunate in that the futex call must have a timeout set because of the possible deadlock condition where only the half of the pointer not futexed is modified between the time the system call is entered and executed.
This creates a situation that prevents the locking_ptr from being realtime safe unless the timeout is set at a very low value. Furthermore, this causes excess CPU usage due to spurious wakeups.
Thank you, Ryan Nicholl
| |