Yes, the pthread solution more than sufficiently protects it. (A pthread_rwlock would let readers operate at the same time and only block them for writes.)
If the gcc atomic operations are truly atomic, getva shouldn't ever return garbage.
I have a question, if a shared variable may read/write by some threads and with pthread_mutex_lock(), is the variable requires a 'volatile'?
e.g.
---------- Post updated at 01:03 PM ---------- Previous update was at 01:02 PM ----------
I am sorry, it should be:
Quote:
Originally Posted by fpmurphy
I assume that this is a typo - the second pthread_mutex_lock() should be a pthread_mutex_unlock().
Hi,
I am creating a file in Unix using a shell script. The file is getting created in the Unix - ANSI format. My requirement is to convert it to the PC - ANSI format. Can anyone tell me how to do this?
Thanks,
Sunil (0 Replies)
I have been wondering what the difference between pthread_rwlock_lock and pthread_mutex_lock is. Both these routines acquire an exclusive rw lock on an enclosed region.
So I performed a simple experiment in which I execute both these routines multiple times in a loop. Here are the results:... (1 Reply)
Executive summary:
Code (posted below) cores in AIX 5.3, despite being compiled and run successfully on several other operating systems. Code is attempting to verify that pthread_mutex_lock can be successfully aborted by siglongjmp. I do not believe this is an unreasonable requirement.
If... (1 Reply)
Hi
Is there a way to get the program/script name or function name usng built ins.
Like in many languages arg holds the program name
regards (2 Replies)
I follow the description of wiki (Lamport's bakery algorithm - Wikipedia, the free encyclopedia), then implement that algorithm in C, but it doesn't work, Starving is still here, is the implementation worry?
Only print out:
Thread ID: 0 START!
Thread ID: 0 END!
Thread ID: 0 START!... (2 Replies)
I am looking to create some ksh93 extensions using the custom builtin feature.
I can successfully create a builtin function, load it using the builtin -f command and get an output. However, I want to get/set values of KSH variables from within my built-in.
For example, lets say I am creating... (2 Replies)
Why do shell builtins like echo and pwd have binaries in /bin? When I do which pwd, I get the one in /bin. that means that I am not using the builtin version? What determines which one gets used? Is the which command a definitive way to determine what is being run when I enter pwd? (16 Replies)
I have put some yellow color codes and works well.
I call the funstion using
print_usage(stderr, 0);
I would like to know if there is any way, to store the ansi color codes in variables and then call them inside fprintf.
Or have a format followed by the strings I want to output.
... (5 Replies)
Not sure if this is the right forum but I have collated a listing of shell and bash builtins.
Builtins is a loose word and may include the '/bin' drawer/folder/directory but NOT any
others in the path list.
In the case of my Macbook Pro, OSX 10.7.5 the enabled internals is also listed...
... (1 Reply)
Discussion started by: wisecracker
1 Replies
LEARN ABOUT LINUX
atomic_ops
atomic_ops(3C)atomic_ops(3C)NAME
atomic_ops - atomic operations
SYNOPSIS
#include <atomic.h>
This collection of functions provides atomic memory operations. There are 8 different classes of atomic operations:
atomic_add(3C) These functions provide an atomic addition of a signed value to a variable.
atomic_and(3C) These functions provide an atomic logical 'and' of a value to a variable.
atomic_bits(3C) These functions provide atomic bit setting and clearing within a variable.
atomic_cas(3C) These functions provide an atomic comparison of a value with a variable. If the comparison is equal, then swap in a new
value for the variable, returning the old value of the variable in either case.
atomic_dec(3C) These functions provide an atomic decrement on a variable.
atomic_inc(3C) These functions provide an atomic increment on a variable.
atomic_or(3C) These functions provide an atomic logical 'or' of a value to a variable.
atomic_swap(3C) These functions provide an atomic swap of a value with a variable, returning the old value of the variable.
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Interface Stability |Stable |
+-----------------------------+-----------------------------+
|MT-Level |MT-Safe |
+-----------------------------+-----------------------------+
atomic_add(3C), atomic_and(3C), atomic_bits(3C), atomic_cas(3C), atomic_dec(3C), atomic_inc(3C), atomic_or(3C), atomic_swap(3C), mem-
bar_ops(3C), attributes(5)
Atomic instructions ensure global visibility of atomically-modified variables on completion. In a relaxed store order system, this does
not guarantee that the visibility of other variables will be synchronized with the completion of the atomic instruction. If such synchro-
nization is required, memory barrier instructions must be used. See membar_ops(3C).
Atomic instructions can be expensive. since they require synchronization to occur at a hardware level. This means they should be used with
care to ensure that forcing hardware level synchronization occurs a minimum number of times. For example, if you have several variables
that need to be incremented as a group, and each needs to be done atomically, then do so with a mutex lock protecting all of them being
incremented rather than using the atomic_inc(3C) operation on each of them.
12 Aug 2004 atomic_ops(3C)