Sponsored Content
Full Discussion: Multi-threading questions
Top Forums Programming Multi-threading questions Post 42526 by DreamWarrior on Thursday 30th of October 2003 01:19:40 PM
Old 10-30-2003
Multi-threading questions

I've been doing some reading lately about threading (Posix threads) and I'm really curious about a couple things that I've read. I'm not sure if many people here have threading experience, but I thought it would be nice to be able to discuss some questions about it.

(For the record, I did search, and found tons of threads with "thread" in them for obvious reasons, refining my search to "posix thread" revealed very limited results - and one general thread that was from 2002 - similar searching for "multi thread" provided minimal results as well. Anyway, I just wanted you all to know that I searched before starting a somewhat general thread).

On to the questions:

1) I know that errno is thread safe when the _REENTRANT macro is defined...what about when it is not? I.E. I'm calling a library function from a library that wasn't compiled with the _REENTRANT macro, what errno value do those functions get? Always the errno from the first thread (this is what I'd hope such that a library can declare that it is safe if called from the primary thread).

2) I've seen functions re-written to be thread safe by doing their work in a local variable, then copying that local variable out to a user passed in storage area. What I wonder is, what about just using the user defined storage area directly? I.E. Why do they do this:

Code:
int func(struct f_struct *outBuf)
{
   struct f_struct work;

   /* set everything in work */

   memcpy(outBuf, &work, sizeof(struct f_struct));
}

While it would seem just as appropriate to do the work directly in outBuf?

I would think that with large structures, the memcpy at the end would be more expensive than working with outBuf directly?

What I'm wondering is are both methods appropriate, and my literature only mentions their preference?

3) In general, it seems that an application using threads needs to link with the pthread library. Therefore, how do I provide both thread safe interfaces and standard interfaces in one library without requring an application to link with the pthread library. Obviously to call the functions that use pthread_ functions, I need that library. However, I'd prefer NOT to make a library dependant on the availabillity of a thread library. How do the standard libraries overcome this?

Anyway, I'm sure I'll have more questions...but that's all I can think of right now...off to read some more.
 

10 More Discussions You Might Find Interesting

1. Programming

Multi threading using posix thread library

hi all, can anyone tell me some good site for the mutithreading tutorials, its application, and some code examples. -sushil (2 Replies)
Discussion started by: shushilmore
2 Replies

2. Programming

Multi threading using fork

Hi, I have written a code which will run a set of process using fork. I want to know from You how can i start another job when one of my job in my loop is completed My code is #include<stdio.h> #include<ctype.h> main() { int pid,cid; ChildProcess(); ... (1 Reply)
Discussion started by: sureshraju_ma
1 Replies

3. Programming

Regarding Multi-Threading

Hi All, Here's my question I have a 385 MB file containing 5,000,000 records. I need to read from the file and load into a table. Initially i thought of doing it in a single thread (execution of a single program) but when calculated accounted 16 hours of time on a standard benchmark. Hence... (5 Replies)
Discussion started by: matrixmadhan
5 Replies

4. Programming

Multi threading?

I am not sure if multi threading is the correct term, but here is what I am trying to do. I have a while loop that displays the number 1, pauses, displays the number 2, pauses , displays the number 3 ad infinitum. It just keeps counting. While the screen displays the sequence of numbers counting... (4 Replies)
Discussion started by: enuenu
4 Replies

5. Programming

Multi-threading-- calling same function through different threads

Sir, Can I call same function in the start routines of different Threads. I have created two different threads....and wanna call same function from both threads....is it possible??? Also can I fork inside a thread??? (1 Reply)
Discussion started by: arunchaudhary19
1 Replies

6. Programming

Multi-threading

Hi, If we create 10 threads to invoke runQuery method at same time, Will queryProcessor will be overriden sometime or 10 different copies will be created? We are not using any sunchronzation mechnism in runQuery(). so there is not gurantee on QueryProcessor class variables right OR each 10... (1 Reply)
Discussion started by: jramesh1
1 Replies

7. Programming

Multi-threading

In this piece i implemented the gossip method. The first thread is invoked from inside the (msg is first sent from node -1 to 0 from main()) and the other threads are invoked from inside of the thread function itself. I used two mutexes and a condition variable to control the synchronization. ... (4 Replies)
Discussion started by: saman_glorious
4 Replies

8. UNIX for Dummies Questions & Answers

Confusion over Multi Threading

Hi, I am trying to get my head round Multi Threading and I have a few queries to try and clear up my confusion Q1. Is multi threading a hardware / chip level concept, an OS level or an application level concept ? I am trying to work out where SMT architecture fits in. Q2. What's the multi... (3 Replies)
Discussion started by: jimthompson
3 Replies

9. UNIX for Beginners Questions & Answers

Does UNIX support multi-Threading ?

Not just background process running ... but im looking if unix has any multi-threading concept like in Java, C# ... if not present, can you pls share the nearest feature in unix that is close to multi-threaded concept (3 Replies)
Discussion started by: i4ismail
3 Replies

10. UNIX for Beginners Questions & Answers

Multi threading in UNIX

Hi, Can we apply multi threading in Unix. I am using bash shell. We have a generic script to load the data to table based on file input. For each file there is an individual table to load. For each file found in directory I want to load the data in parallel to target table using ... (3 Replies)
Discussion started by: vedanta
3 Replies
XInitThreads(3) 						  XLIB FUNCTIONS						   XInitThreads(3)

NAME
XInitThreads, XLockDisplay, XUnlockDisplay - multi-threading support SYNTAX
Status XInitThreads(void); void XLockDisplay(Display *display); void XUnlockDisplay(Display *display); ARGUMENTS
display Specifies the connection to the X server. DESCRIPTION
The XInitThreads function initializes Xlib support for concurrent threads. This function must be the first Xlib function a multi-threaded program calls, and it must complete before any other Xlib call is made. This function returns a nonzero status if initialization was suc- cessful; otherwise, it returns zero. On systems that do not support threads, this function always returns zero. It is only necessary to call this function if multiple threads might use Xlib concurrently. If all calls to Xlib functions are protected by some other access mechanism (for example, a mutual exclusion lock in a toolkit or through explicit client programming), Xlib thread ini- tialization is not required. It is recommended that single-threaded programs not call this function. The XLockDisplay function locks out all other threads from using the specified display. Other threads attempting to use the display will block until the display is unlocked by this thread. Nested calls to XLockDisplay work correctly; the display will not actually be unlocked until XUnlockDisplay has been called the same number of times as XLockDisplay. This function has no effect unless Xlib was successfully initialized for threads using XInitThreads. The XUnlockDisplay function allows other threads to use the specified display again. Any threads that have blocked on the display are allowed to continue. Nested locking works correctly; if XLockDisplay has been called multiple times by a thread, then XUnlockDisplay must be called an equal number of times before the display is actually unlocked. This function has no effect unless Xlib was successfully ini- tialized for threads using XInitThreads. SEE ALSO
Xlib - C Language X Interface X Version 11 libX11 1.2.1 XInitThreads(3)
All times are GMT -4. The time now is 01:42 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy