Sponsored Content
Top Forums Programming calling pthread_self (on ubuntu), expensive? Post 302428020 by gorga on Tuesday 8th of June 2010 02:48:37 PM
Old 06-08-2010
Quote:
Originally Posted by Corona688
As I suspected it would, pthread_getspecific uses THREAD_SELF anyway -- and that's only in the best case. Worst case it has to plunge in and access other thread memory other ways.
Thanks for the heads-up Corona688,

You might be right, but the thing is I had to store the "pthread_t" values in an array anyway, so in my application, after calling pthread_self() I would then always have to search the array for the corresponding "pthread_t" value. (At the moment this search is O(n) but I had planned to get it down to O(log n) using a binary-search algorithm if the number of threads is "high").

The good thing about "pthread_getspecific" is it returns the actual data I wanted, but as you pointed out, it looks a bit "involved" when it's not the best case. Maybe I'll try both approaches and see which is quicker.

Using "pthread_getspecific" might be better in avoiding a cache colision though, rather than threads accessing data in a global table.

Quote:
Stop trying to be so clever and just use pthread_self, that's what it's there for Smilie
Trying to be clever ain't so bad if I can manage to pull it off now and againSmilie
 

6 More Discussions You Might Find Interesting

1. Programming

Which is more expensive ?

I have the following code snippet's. Which one among these would be more expensive ? #1 for (int fd = 0; fd <= 1024; ++fd) close(fd); #2 for (int fd = 0; fd <= 1024; fd += 8) { close(fd); close(fd+1); close(fd+2);... (6 Replies)
Discussion started by: vino
6 Replies

2. UNIX for Dummies Questions & Answers

Would like to install x86 desktop Ubuntu over AMD64 Ubuntu server

My intention was to build a dual boot XP Pro 64 and Ubuntu media server. I had installed the AMD64 version of Ubuntu 8.10 server and thought that I would be able to install Apache server. I need a GUI to work in. I tried to boot and install Mythbuntu 32 bit 8.10, but my machine now won't recognize... (0 Replies)
Discussion started by: docflyboy
0 Replies

3. Ubuntu

Ubuntu / Ubuntu File Manager / Config

I am using Ubuntu 9.10 with Gnome 2.28. I use the default Nautilus File Manager to view / manage files. Is there a way to add icons or customize the icons that are above the location bar and below the menus? There is a bar that has icons for "Back" "Forward" "Parent" above the location bar. I... (6 Replies)
Discussion started by: drewk
6 Replies

4. Ubuntu

[UBUNTU] mount.nfs fails in Ubuntu / Works on Red Hat!!!

Gurus, I want log in locally to my Lucid (10.04) workstation and have my code saved over the network on my samba account At work, all developers have samba user ids and when we were running Red Hat, we went thru the following procedure to get setup. * open a shell session to NFS server... (2 Replies)
Discussion started by: alan
2 Replies

5. What is on Your Mind?

Very Expensive Running Shoes

You really should not need one third of the entire US budget to buy a pair of running shoes... even if they are name brand. What have these guys been smoking? It reminds me of the old joke... Customer: At those prices you aren't going to sell many shoes. Salesman: Ah, but all we need to do is... (4 Replies)
Discussion started by: Perderabo
4 Replies

6. Ubuntu

Re-install Ubuntu 14.04 from system with Ubuntu on it

I need to re-install ubuntu on a system with ubuntu 14.04 already installed. I have the cd but can not seem to boot from it or find the installer. Is there a way to re-install from the command line or how do I do a fresh re-install? Thank you :) ---------- Post updated at 10:13 AM... (2 Replies)
Discussion started by: cmccabe
2 Replies
PTHREAD_GETSPECIFIC(3)					   BSD Library Functions Manual 				    PTHREAD_GETSPECIFIC(3)

NAME
pthread_getspecific -- thread-specific data value LIBRARY
POSIX Threads Library (libpthread, -lpthread) SYNOPSIS
#include <pthread.h> void * pthread_getspecific(pthread_key_t key); int pthread_setspecific(pthread_key_t key, const void *value); DESCRIPTION
The pthread_getspecific() function returns the value currently bound to the specified key on behalf of the calling thread. Conversely, the pthread_setspecific() function associates a thread-specific value with a key obtained via a previous call to pthread_key_create(3). Differ- ent threads have different values bound to each key. These values are typically pointers to blocks of dynamically allocated memory that have been reserved for use by the calling thread. Undefined behavior may follow if either function is called with a key value not obtained from pthread_key_create(3), or if the call is made after key has been deleted with pthread_key_delete(3). It is possible to call either function from a thread-specific data destructor func- tion. Note however that this is not well defined for the pthread_setspecific() function; lost storage or infinite loops may occur. RETURN VALUES
The pthread_getspecific() function will return the thread-specific data value associated with the given key. If no thread-specific data value is associated with key, then the value NULL is returned. If successful, the pthread_setspecific() function will return zero. Other- wise an error number will be returned to indicate the error. ERRORS
No errors are defined for either function. SEE ALSO
pthread_key_create(3) STANDARDS
These functions conform to IEEE Std 1003.1-2001 (``POSIX.1''). BSD
July 9, 2010 BSD
All times are GMT -4. The time now is 04:57 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy