Sponsored Content
Top Forums Programming pthread_mutex_lock in ANSI C vs using Atomic builtins of GCC Post 302448266 by sehang on Wednesday 25th of August 2010 03:39:54 PM
Old 08-25-2010
pthread_mutex_lock in ANSI C vs using Atomic builtins of GCC

I have a program which has 7-8 threads, and lots of shared variables; these variables (and also they may not the primitive type, they may be enum or struct ), then they may read/write by different threads at the same time.

Now, my design is like this,

Code:
typedef unsigned short int UINT16;
struct STRUCT {
  UINT16 uint16;
  int INT;
}
enum ENUM = { ... };

/* Shared Variables. */
struct STRUCT Shared_VariableA;
enum ENUM Shared_VariableB;

UINT16 GetVA () {
    pthread_mutex_lock( &_L_LOCK );
        UINT16 TMP = Shared_VariableA.uint16;
    pthread_mutex_lock( &_L_LOCK );
    return TMP;
}

void SetVA ( UINT16 in ) {
     pthread_mutex_lock( &_L_LOCK );
         Shared_VariableA.uint16 = in;
     pthread_mutex_lock( &_L_LOCK );
 }

Is it enough to guarantee that only a thread can write/read shared variables at the same time?

How about the following method? Same?
From the reference : Techie Stuff Atomic Operations

Code:
/* Initialization. */
atomic_t uint16 = ATOMIC_INIT ( 0 );

UINT16 GetVA () {
         UINT16 TMP = atomic_read( &uint16 );  /* Force convert 'int' to UINT16 since atomic_read() returns an int (32 bits). */
        return TMP;
 }
 
 void SetVA ( UINT16 in ) {
       atomic_set( &uint16,in );
  }

Whether getVA() will return an arbitrary value when SetVA() is running by other threads?
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Convert file from Unix - ANSI to PC - ANSI

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)
Discussion started by: ssmallya
0 Replies

2. Programming

pthread_rwlock_lock vs pthread_mutex_lock

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)
Discussion started by: kmehta
1 Replies

3. Programming

Interesting issue with pthread_mutex_lock and siglongjmp in AIX 5.3 (and no other OS)

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)
Discussion started by: DreamWarrior
1 Replies

4. Shell Programming and Scripting

program name and function name builtins

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)
Discussion started by: xiamin
2 Replies

5. Programming

why the implementatoin of Bakery algorithm in ANSI C does not work in ANSI C

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)
Discussion started by: sehang
2 Replies

6. UNIX for Advanced & Expert Users

Writing Custom Builtins for KSH93

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)
Discussion started by: a_programmer
2 Replies

7. UNIX for Dummies Questions & Answers

Why does /bin contain binaries for builtins?

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)
Discussion started by: glev2005
16 Replies

8. Programming

Using ANSI color codes in gcc compiled program

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)
Discussion started by: kristinu
5 Replies

9. UNIX for Dummies Questions & Answers

Shell and bash builtins...

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
All times are GMT -4. The time now is 11:28 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy