Sponsored Content
Top Forums Programming calling pthread_self (on ubuntu), expensive? Post 302427078 by gorga on Thursday 3rd of June 2010 06:55:00 PM
Old 06-03-2010
Thanks for your replay Corona688.

I found similar code in glibc (tls.h)...

Code:
/* Return the TCB address of the current thread.  */
# define THREAD_SELF                                   \
  ({ tcbhead_t *__tcb;                                  \
     __asm__ ("movl %%gs:%c1,%0" : "=r" (__tcb)                      \
          : "i" (offsetof (tcbhead_t, tcb)));                  \
     __tcb;})

Which I believe is accessing the Thread Control Block of the running thread which resides here in the gs register, specifically the offset containing the tcb address, I think.

This should result in a pretty quick, "inexpensive" and scalable operation then. Wondered if there was a chance that another thread could overwrite the register where this value is written before the calling thread retrieved it, (the volatile keyword isn't used) but I suppose this function would be useless if that was a possibility. This function must be thread safe, right?

Cheers,
 

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(3T) 												   pthread_getspecific(3T)

NAME
pthread_getspecific(), pthread_setspecific() - get or set the thread-specific data associated with a key SYNOPSIS
PARAMETERS
key Thread-specific data key whose value for the calling thread is to be set or retrieved. value Value to be assigned to the thread-specific data key for the calling thread. DESCRIPTION
The function returns the thread-specific data value associated with key for the calling thread. If no value has been associated with key for the calling thread, NULL is returned. The function associates the thread-specific data value with key. Each thread may bind a different value to key. These values are usually pointers to memory dynamically allocated by the calling thread. key must be a valid thread-specific data key created by calling If key is not a valid thread-specific data key, undefined behavior results when calling these functions. These functions may be called from a thread-specific data destructor function. However, calling from a destructor may result in lost stor- age. RETURN VALUE
The function returns the thread-specific data value associated with key. If no thread-specific data value is currently associated with key, the value NULL is returned. If successful, returns zero. Otherwise, an error number is returned to indicate the error (the variable is not set). ERRORS
No errors are returned by the function. If any of the following occur, the function returns the corresponding error number: [ENOMEM] There is insufficient memory available in which to associate value with key. For each of the following conditions, if the condition is detected, the function returns the corresponding error number: [EINVAL] key is an invalid thread-specific data key. AUTHOR
and were derived from the IEEE POSIX P1003.1c standard. SEE ALSO
pthread_key_create(3T), pthread_key_delete(3T). STANDARDS CONFORMANCE
Pthread Library pthread_getspecific(3T)
All times are GMT -4. The time now is 02:42 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy