Sponsored Content
Top Forums Programming unable to use a function to crate a joinable thread Post 302518209 by sehang on Friday 29th of April 2011 12:02:13 AM
Old 04-29-2011
unable to use a function to crate a joinable thread

In my program, threads may be created when some events trigger. So I can't create threads on initialization.

Theremore,I write a createThread() function to create thread. However, it is blocking at first call and don't run anymore? why?

Code:
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void *BusyWork(void *t)
{
   int i = 0;
   long tid;
   double result=0.0;
   tid = (long)t;
   printf("Thread %ld starting...\n",tid);
   while ( 1 ) {
      result = result + sin(i) * tan(i);
      i++;
   }
   printf("Thread %ld done. Result = %e\n",tid, result);
   pthread_exit((void*) t);
}


void createThread () {
  int rc;
  void *status;
  pthread_attr_t attr;
  pthread_t thread;
  pthread_attr_init(&attr);
  pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
  rc = pthread_create(&thread, &attr, BusyWork, (void *)0); 
  if (rc) {
    printf("ERROR; return code from pthread_create() is %d\n", rc);
    exit(-1);
   }
    pthread_attr_destroy(&attr);
    rc = pthread_join(thread, &status);
    if (rc) {
       printf("ERROR; return code from pthread_join() is %d\n", rc);
       exit(-1);
    }
    printf("Main: completed join with thread %d having a status of %ld\n",0,(long)status);
}

int main (int argc, char *argv[])
{
  createThread();  // <- Blocking here
  createThread();  
  printf("Main: program completed. Exiting.\n");
  pthread_exit(NULL);
}

Thanks for your help!
 

10 More Discussions You Might Find Interesting

1. HP-UX

create thread C with JNI function with JAVA

Hello, J create a thread C with a JNI function via JAVA. J have the following message (but not in each time): Someone has an idea ? Thank. Unexpected Signal : 4 occurred at PC=0x78C103E0 Function= Library=(N/A) NOTE: We are unable to locate the function name... (0 Replies)
Discussion started by: AUBERT
0 Replies

2. Post Here to Contact Site Administrators and Moderators

Unable to open thread

I am unable to open the mimesender thread. I get the following message when clicking on https://www.unix.com/showthread.php?p=33233#post33233 : (2 Replies)
Discussion started by: dangral
2 Replies

3. Programming

create a thread from a returning function

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: void *thread_function(void *arg) { /* thread function */ int i; rc =... (3 Replies)
Discussion started by: wolwy_pete
3 Replies

4. Forum Support Area for Unregistered Users & Account Problems

unable to post thread

Hello, I'd like to post a aix thread but I'm unable to. Please let me know why this is happening. Thanks.... (1 Reply)
Discussion started by: sullivjp
1 Replies

5. Programming

Unable to create a UDP client from thread?

I try to initial a UDP client from threading, but it doesn't work? why? These codes from the textbook #define ECHOMAX 255 /* Longest string to echo */ #define TIMEOUT_SECS 2 /* Seconds between retransmits */ #define MAXTRIES 5 /* Tries before giving up */... (3 Replies)
Discussion started by: sehang
3 Replies

6. Programming

Thread function local variables

As I know threads share the memory. But, what about the local variables in the thread function? if i call multiple threads would they allocate seperate local variables for themselves? like thread_func() { int i, j; string... } Are the above local variables defined for each of... (1 Reply)
Discussion started by: saman_glorious
1 Replies

7. Shell Programming and Scripting

Deliver values to Thread function

Hello, I hope you can help me with my problem. I've written a programm which creates a thread. The main programmm creates 10 int and float values. The fucnction should give the values out. May big problem ist that the delivery to the function is not working. Where ist my fault? How can I make... (1 Reply)
Discussion started by: jimm_the_h
1 Replies

8. Forum Support Area for Unregistered Users & Account Problems

Unable to post or reply thread after login

I am unable to post reply to a thread. Whenever I will reply to any post I get the message every time : The message you have entered is too short. Please lengthen your message to at least 5 characters. Even though length of the message is more than required. for example I tried to post ... (3 Replies)
Discussion started by: Unregistered
3 Replies

9. Forum Support Area for Unregistered Users & Account Problems

Unable to create new thread

Hi. I registered, but when trying to post, I get ... "Sorry, you do not have enough Bits to post a new thread" Google & Forum search showed some hits, but no solution. Please advide. Thanks! (1 Reply)
Discussion started by: gehe
1 Replies

10. Red Hat

Unable to capture value from function

Hi Experts, Am writing a code which need to check for the previous day date and pickup the file as per the previous day date. Problem: Why variable "YDATE" is empty ? O/S: RHEL 5.6 Shell: BASH Desired O/P: ls -lrt /opt/test/user/atsuser.NHU/out/demon.08272017 When I checked the... (3 Replies)
Discussion started by: pradeep84in
3 Replies
PTHREAD_ATTR_SETDETACHSTATE(3)				     Linux Programmer's Manual				    PTHREAD_ATTR_SETDETACHSTATE(3)

NAME
pthread_attr_setdetachstate, pthread_attr_getdetachstate - set/get detach state attribute in thread attributes object SYNOPSIS
#include <pthread.h> int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate); int pthread_attr_getdetachstate(pthread_attr_t *attr, int *detachstate); Compile and link with -pthread. DESCRIPTION
The pthread_attr_setdetachstate() function sets the detach state attribute of the thread attributes object referred to by attr to the value specified in detachstate. The detach state attribute determines whether a thread created using the thread attributes object attr will be created in a joinable or a detached state. The following values may be specified in detachstate: PTHREAD_CREATE_DETACHED Threads that are created using attr will be created in a detached state. PTHREAD_CREATE_JOINABLE Threads that are created using attr will be created in a joinable state. The default setting of the detach state attribute in a newly initialized thread attributes object is PTHREAD_CREATE_JOINABLE. The pthread_attr_getdetachstate() returns the detach state attribute of the thread attributes object attr in the buffer pointed to by detachstate. RETURN VALUE
On success, these functions return 0; on error, they return a nonzero error number. ERRORS
pthread_attr_setdetachstate(3) can fail with the following error: EINVAL An invalid value was specified in detachstate. CONFORMING TO
POSIX.1-2001. NOTES
See pthread_create(3) for more details on detached and joinable threads. A thread that is created in a joinable state should eventually either be joined using pthread_join(3) or detached using pthread_detach(3); see pthread_create(3). It is an error to specify the thread ID of a thread that was created in a detached state in a later call to pthread_detach(3) or pthread_join(3). EXAMPLE
See pthread_attr_init(3). SEE ALSO
pthread_attr_init(3), pthread_create(3), pthread_detach(3), pthread_join(3), pthreads(7) COLOPHON
This page is part of release 3.27 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/. Linux 2010-02-03 PTHREAD_ATTR_SETDETACHSTATE(3)
All times are GMT -4. The time now is 09:25 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy