12-02-2008
race condition with wait() function
Hi,
I'm currently writing a bash script, that starts multiple threads:
____________________
#!/bin/bash
loop=0
while((loop!=10))
do
thread &
((loop++))
done
#wait for all sub-processes (thread) to finish
wait
___________________
Now I want to know, what happens, if a sub-process (thread) is finished,
before the main-script gets to the wait parameter.
Will the wait parameter realize, that the thread has already finished or will it wait to infinity?
Thnaks for your help...
8 More Discussions You Might Find Interesting
1. Linux
In unix how we can test or check race condition in any c program by using multi thread programming (1 Reply)
Discussion started by: afroze
1 Replies
2. UNIX for Dummies Questions & Answers
In unix how we can test or check race condition in any c program by using multi thread programming (1 Reply)
Discussion started by: afroze
1 Replies
3. Programming
In unix how we can test or check race condition in any c program by using multi thread programming (5 Replies)
Discussion started by: afroze
5 Replies
4. Programming
In unix how we can test or check race condition in any c program by using multi thread programming (1 Reply)
Discussion started by: afroze
1 Replies
5. Programming
I've been experimenting with pseudo-terminals and found something I don't quite understand. Writing an EOF character to the master end doesn't work quite as I expect. Once I've written any other data, the master pty seems to treat a single ^D as a seperator, i.e. writing "abcabc" would let cat do... (1 Reply)
Discussion started by: Corona688
1 Replies
6. Programming
Hi all,
i'm reading Andrew S.Tanenbaum's book --- Modern Operating System.At the part of discussing race condition.And the author gives a solution with using the TSL instruction,say that one process must call the enter_region function before entering the critical regions and call the leave_region... (0 Replies)
Discussion started by: homeboy
0 Replies
7. Shell Programming and Scripting
Hi everyone,
I need some help to create a script. This script have to create a file once all the process inside are finish.
Here how I want to do : #!/bin/ksh
/home/oracle/save1.ksh &
proc_id1=$!
/home/oracle/save2.ksh &
proc_id2=$!
/home/oracle/save3.ksh &
proc_id3=$!
... (4 Replies)
Discussion started by: remfleyf
4 Replies
8. UNIX for Dummies Questions & Answers
when wait() is called by process it blocks calling process until child is done. What happens if calling process have multiple children.
What does wait(NULL) function do. Waits until all children are done? (1 Reply)
Discussion started by: joker40
1 Replies
LEARN ABOUT SUNOS
thr_join
thr_join(3C) Standard C Library Functions thr_join(3C)
NAME
thr_join - wait for thread termination
SYNOPSIS
cc -mt [ flag... ] file...[ library... ]
#include <thread.h>
int thr_join(thread_t thread, thread_t *departed, void **status);
DESCRIPTION
The thr_join() function suspends processing of the calling thread until the target thread completes. The thread argument must be a member
of the current process and cannot be a detached thread. See thr_create(3C).
If two or more threads wait for the same thread to complete, all will suspend processing until the thread has terminated, and then one
thread will return successfully and the others will return with an error of ESRCH. The thr_join() function will not block processing of the
calling thread if the target thread has already terminated.
If a thr_join() call returns successfully with a non-null status argument, the value passed to thr_exit(3C) by the terminating thread will
be placed in the location referenced by status.
If the target thread ID is 0, thr_join() finds and returns the status of a terminated undetached thread in the process. If no such thread
exists, it suspends processing of the calling thread until a thread for which no other thread is waiting enters that state, at which time
it returns successfully, or until all other threads in the process are either daemon threads or threads waiting in thr_join(), in which
case it returns EDEADLK. See NOTES.
If departed is not NULL, it points to a location that is set to the ID of the terminated thread if thr_join() returns successfully.
RETURN VALUES
If successful, thr_join() returns 0. Otherwise, an error number is returned to indicate the error.
ERRORS
EDEADLK A joining deadlock would occur, such as when a thread attempts to wait for itself, or the calling thread is waiting for any
thread to exit and only daemon threads or waiting threads exist in the process.
ESRCH No undetached thread could be found corresponding to the given thread ID.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|MT-Level |MT-Safe |
+-----------------------------+-----------------------------+
SEE ALSO
thr_create(3C), thr_exit(3C), wait(3C), attributes(5), standards(5)
NOTES
Using thr_join(3C) in the following syntax,
while (thr_join(0, NULL, NULL) == 0);
will wait for the termination of all non-daemon threads, excluding threads that are themselves waiting in thr_join().
SunOS 5.10 27 Mar 2000 thr_join(3C)