Sponsored Content
Top Forums Programming Multiple instances of pthread Post 302644409 by jim mcnamara on Monday 21st of May 2012 10:00:53 PM
Old 05-21-2012
Several points. Thread synchronization ( what you are asking about)
Code:
pthread_t tid;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
pthread_create(&tid, &attr, some_func, (void *)args);

This creates a detached thread - one that goes away when it hits a pthread_exit() statement or a return statement at the end of some_func();

The default pthread_create() call, by default, in most UNIXes, creates a joinable thread.
Not a detached thread like above.

So you do this for each thread:
Code:
pthread_t tid;
pthread_create(&tid, &attr, some_func, (void *)args);
pthread_join(tid, NULL);


The code blocks on pthread_join() until the child thread hits return or pthread_exit().
One type of thread you wait for (join) the other you do not care about.

You need to decide which one you want to use, there really aren't a lot of other choices.
You can set a global variable:
Code:
volatile int i_am_done=0;

and change the variable to let the parent know a detached thread completed.
Protect the volatile int with a mutex: pthread_mutex_lock & pthread_mutex_unlock calls, whenever you set or look at the variable.

And. pthread_kill is not always a great choice. All it does is to direct the signal to the thread. Example: SIGKILL (kill -9) destroys the entire process because the effect of the signal is to nuke the entire process. So signals do not behave the way you might believe a priori.
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

multiple instances of syslogd - is it possible?

I would like to start up multiple instances of syslog daemon. I am having a little difficulty. Is this at all possible? I have separate syslog.conf1.... syslog.conf5 files. I have linked the daemon to separate files syslogd1 ... syslogd5 I have arranged the rcd.2 start/stop scripts for... (9 Replies)
Discussion started by: Gary Dunn
9 Replies

2. UNIX for Dummies Questions & Answers

Multiple file instances

I am capturing text based reports with a specific program, which works no problem. However, since I send report warehouse output as they are migrated from the database software, on occasion when two capture process' initiate simultaneously, the capture file locks up. Is there a way to setup (in... (1 Reply)
Discussion started by: gozer13
1 Replies

3. Shell Programming and Scripting

detecting multiple instances

Hi Gurus I have a requirement like this. i use solaris OS.. if there are 2 instances of the same ksh file running in the directory, i need to kill the ksh file that started to run latest. suppose ragha.ksh starts running thru cron in abc/xyz directory now ragha.ksh started running by any... (3 Replies)
Discussion started by: ragha81
3 Replies

4. Shell Programming and Scripting

kill multiple instances of the same program

Hi, I know that the answer to this is very simple, since I saw somebody do it some time back..but I forgot how. The problem is, I have multiple instances of the same program running simultaneously and I want to kill them all in a single command. I know that it can be done using awk '{print... (12 Replies)
Discussion started by: ipzig
12 Replies

5. AIX

multiple instances of same vg on same AIX machine

hi, i am new to AIX and to this forum as well. Can you please help me out with following issue/requirement 1) I have one physical volume (pv1) (a scsi disk). (pv1) on 1st AIX machine. I have a single volume group on it(vg1). 2)I removed it from the 1st AIX machine and exported to the 2nd... (1 Reply)
Discussion started by: navadeep
1 Replies

6. Shell Programming and Scripting

Multiple instances of a job.

Could you please let me know how to create/make a multiple instances of a job/process in ksh(shell scripting). i.e., at present the parent script is calling another child/dependent script for only once. What we want is, the parent script itself has to execute multiple times, and in each one it... (1 Reply)
Discussion started by: Gangegowda
1 Replies

7. Shell Programming and Scripting

Checking for multiple instances of a process

Hi I have a scenario where i need to check multiple instances of a running shell script (abc.sh) . How can I find from inside a running shell script whether any other instance of the same script is running or not? If any other instance of same shell script is running I need to exit from... (4 Replies)
Discussion started by: raghu.amilineni
4 Replies

8. Shell Programming and Scripting

Grep with multiple instances of same pattern

Hi, This is my text file I'm trying to Grep. Apple Location Greenland Rdsds dsds fdfd ddsads http Received Return Immediately Received End My Grep command: grep only--matching 'Location.*Received' e. Because the keyword Received appears twice, the Grep command will stop at the last... (0 Replies)
Discussion started by: spywarebox
0 Replies

9. Shell Programming and Scripting

Grep with multiple instances of same pattern

Hi, This is my text file I'm trying to Grep. Apple Location Greenland Rdsds dsds fdfd ddsads http Received Return Immediately Received End My Grep command: grep only--matching 'Location.*Received' Because the keyword Received appears twice, the Grep command will stop at the last... (3 Replies)
Discussion started by: spywarebox
3 Replies

10. Programming

Control multiple program instances - open multiple files problem

Hello. This shouldn't be an unusual problem, but I cannot find anything about it at google or at other search machine. So, I've made an application using C++ and QtCreator. I 've made a new mime type for application's project files. My system (ubuntu 10.10), when I right click a file and I... (3 Replies)
Discussion started by: hakermania
3 Replies
PTHREAD_ATTR(3) 					   BSD Library Functions Manual 					   PTHREAD_ATTR(3)

NAME
pthread_attr_getdetachstate, pthread_attr_setdetachstate -- thread attribute operations SYNOPSIS
#include <pthread.h> int pthread_attr_getdetachstate(const pthread_attr_t *attr, int *detachstate); int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate); DESCRIPTION
Thread attributes are used to specify parameters to pthread_create(). One attribute object can be used in multiple calls to pthread_create(), with or without modifications between calls. One of these thread attributes governs the creation state of the new thread. The new thread can be either created "detached" or "joinable". The constants corresponding to these states are PTHREAD_CREATE_DETACHED and PTHREAD_CREATE_JOINABLE respectively. Creating a "joinable" thread allows the user to call pthread_join() and pthread_detach(), with the new thread's ID. A "detached" thread's ID cannot be used with pthread_join() and pthread_detach(). The default value for the "detachstate" attribute is PTHREAD_CREATE_JOINABLE. The pthread_attr_setdetachstate() function sets the thread's "detachstate" attribute. The "detachstate" attribute is set within the attr argument, which can subsequently be used as an argument to pthread_create(). RETURN VALUES
If successful, these functions return 0. Otherwise, an error number is returned to indicate the error. pthread_attr_getdetachstate(), on success, will copy the value of the thread's "detachstate" attribute to the location pointed to by the second function parameter. ERRORS
pthread_attr_getdetachstate() will fail if: [EINVAL] Invalid value for attr pthread_attr_setdetachstate() will fail if: [EINVAL] Invalid value for attr or detachstate. SEE ALSO
pthread_create(3), pthread_join(3), pthread_attr_init(3), pthread_detach(3) STANDARDS
pthread_attr_setdetachstate(), pthread_attr_getdetachstate() conform to ISO/IEC 9945-1:1996 (``POSIX.1'') BSD
December 31, 2007 BSD
All times are GMT -4. The time now is 03:32 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy