The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > High Level Programming
Google UNIX.COM



View Single Post in UNIX Forums - Click on the Thread or Permalink to View Entire Thread -->
  #3 (permalink)  
Old 05-08-2008
andryk's Avatar
andryk andryk is offline
Registered User
 

Join Date: Sep 2003
Posts: 448
Quote:
Originally Posted by wolwy_pete View Post
hi all,
my requirement is to create a thread by calling another function.
i.e i dont call pthread_create directly from main, but by calling another function (createThd - below ), from main.
Example:
Code:
void *thread_function(void *arg) {  /* thread function */
	int i;
	rc = pthread_detach(pthread_self());
	for ( ; ; )  {
		printf("Thread says hi!\n");
		sleep(1);
	}
	pthread_exit(NULL);
}

int main(void) {

	int i;
	i = createThd();  /* call to thread creating function */

	return (0);

}

int createThd()
{
	int rc = 0;
	pthread_t mythread;

	if ( pthread_create( &mythread, NULL, thread_function, NULL) ) {
		printf("error creating thread.");
		return(-1);
	}
	return 0;
}
this creates the thread but doesnt run it, thread terminates as soon as the function createThd() returns.
is there a way to overcome this problem.

any help is appreciated, thankx in advanced.
wolwy.
Hi,
You could wait on createThd() until thread_function() has done his job by means of pthread_cond_wait/pthread_cond_signal & mutexes, just like a parent process would wait (with wait/waitpid) for its child to terminate...
Reply With Quote