Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game. |
Notices |
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
|
 |
08-01-2004, 03:17 PM
|
#1
|
Member
Registered: Apr 2002
Posts: 549
Rep:
|
Local synchronisation
Does any local synchronisation mechanism (eg mutexes, but local to a process) exist in Linux and what are the system calls involved?
|
|
|
08-01-2004, 03:42 PM
|
#2
|
Senior Member
Registered: Jan 2004
Location: Oregon, USA
Distribution: Slackware
Posts: 1,246
Rep:
|
I know pthreads has mutex support built right into the library, but I very rarely build threaded apps so I couldn't tell you what the function calls are off the top of my head.
|
|
|
08-01-2004, 03:50 PM
|
#3
|
Member
Registered: Apr 2002
Posts: 549
Original Poster
Rep:
|
Thanks, I'll look into it. 
|
|
|
08-01-2004, 03:59 PM
|
#4
|
Member
Registered: Mar 2003
Posts: 804
Rep:
|
pthread mutexes, condition variables, and read/write locks are implemented as user space libraries, there are no system calls directly associated with functions that operate on them - there are a number of different ways to implement them. ie FIFOS, mmap'd files and so on. on the other hand, you have SYSV semaphores, which are implemented in the kernel as system calls. see man ipc, which will lead u to semop and friends. for pthread functions, try:
man pthread_mutex_lock, man pthread_cond_wait, man pthread_rwlock_rdlock
|
|
|
08-01-2004, 05:23 PM
|
#5
|
Moderator
Registered: Feb 2002
Location: Grenoble
Distribution: Debian
Posts: 9,696
|
You got a list of man command you may try to look into, I'd add that to use pthread* functions you'd need to link your program with -lpthread option.
|
|
|
09-14-2005, 01:01 AM
|
#6
|
Member
Registered: Nov 2004
Location: Houston, Texas
Distribution: Ubuntu, Debian, Solaris, Free BSD
Posts: 82
Rep:
|
Question:
If I have a function setup for common reference of searching/push/poping a pointer chain structure system, with, lets say syntax for read locking when merely searching the chain, and write locking for when chain elements are created/deleted, is there anyway to allow the same thread to call the function from within the function using BOTH a write and read lock?
Code:
#define PTHREAD_LOCK_TYPE pthread_rwlock_t
#define PTHREAD_LOCK_RDLOCK pthread_rwlock_rdlock
#define PTHREAD_LOCK_WRLOCK pthread_rwlock_wrlock
#define PTHREAD_LOCK_UNLOCK pthread_rwlock_unlock
#define PTHREAD_LOCK_INITIALIZER PTHREAD_RWLOCK_INITIALIZER
extern "C" ServerUserPtr userInfo( Flags flags, ... )
{
if ( flags & FLAG_MODE_SELECT )
PTHREAD_LOCK_RDLOCK( &gUserLock );
else
PTHREAD_LOCK_WRLOCK( &gUserLock );
switch ( flags & 0x000000FF )
{
case FLAG_MODE_SELECT:
(search)
break;
case FLAG_MODE_DELETE:
(delete)
break;
case FLAG_MODE_CREATE:
if ( userInfo( FLAG_MODE_SELECT | FLAG_DATA_USER_USERID, userID ) )
break;
(create)
break;
}
PTHREAD_LOCK_UNLOCK( &gUserLock );
return userPtr;
}
A condensed version of http://dls.palacecommunity.com/open/...sion_users.cpp
Basically, during the creation phase, userInfo will call itself inorder to make user 'userID' is unique for this user. Is there anyway to allow recursive read/write calls to the same function with both a read/write lock under the same thread to make something like this possible? Mutex locks recursive calling within the same thread works, but, it would be nice to have read/write locking instead - quicker access to shared resources.
|
|
|
09-14-2005, 01:16 PM
|
#7
|
Member
Registered: Nov 2004
Location: Houston, Texas
Distribution: Ubuntu, Debian, Solaris, Free BSD
Posts: 82
Rep:
|
Nobody can help with this mutex rwlock stuff?
|
|
|
09-14-2005, 05:38 PM
|
#8
|
Member
Registered: Nov 2004
Location: Houston, Texas
Distribution: Ubuntu, Debian, Solaris, Free BSD
Posts: 82
Rep:
|
Nevermind, my screw up.
|
|
|
All times are GMT -5. The time now is 10:16 AM.
|
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.
|
Latest Threads
LQ News
|
|