LinuxQuestions.org
Support LQ: Use code LQ3 and save $3 on Domain Registration
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices

Reply
 
Search this Thread
Old 01-28-2005, 05:11 AM   #1
George_gk
LQ Newbie
 
Registered: Jan 2005
Location: Athens
Posts: 11

Rep: Reputation: 0
Passing Arguments into the Thread Function


Hello,

I try to write a simple program for creating threads in C++. If I don't have arguments in the Thread Function, it works fine. The problem arises when I try to pass an argument to this function. I have found various code examples, but they all cause compile errors. More specifically, the part of my code concerning the thread creation is the following:


#include <pthread.h>

struct two_args {
int arg1;
int arg2;
};

void *needs_2_args(void *);

void
a()
{
pthread_t t;
struct two_args *ap;

ap = (struct two_args *) malloc(sizeof (struct two_args));
ap->arg1 = 1;
ap->arg2 = 2;
error = pthread_create(&t, NULL, needs_2_args, (void *) ap);
if (error != 0)
deal_with_error ();
}

void *
needs_2_args(void *ap)
{
struct two_args *argp = (void *) ap;
int a1, a2;

a1 = argp->arg1;
a2 = argp->arg2;
free(argp);
}


While compiling, I get the following error:

In function void* needs_2_args(void*)
invalid conversion from 'void*' to 'two_args*'

Similar compile response appears, even if I use a simple argument (e.g. int) and not a struct. As I said before, I have used many code examples from the internet, but they are all similar and I get the same output.

The compiling part of my Makefile is the following:
g++ -c -o $(LIB_DIR)/Test.o -l $(INC_LIB) $(SRC_DIR)/Test.cpp

Do I forget an option? I am using also -lpthread but in the linking part. Should I use it also in the compiling part? If yes, in which place?

Please note that I don't have any experience in Linux Programming.

Thanks in advance,
George
 
Old 01-28-2005, 03:15 PM   #2
Mara
Moderator
 
Registered: Feb 2002
Location: Grenoble
Distribution: Debian
Posts: 9,533

Rep: Reputation: 148Reputation: 148
Re: Passing Arguments into the Thread Function

Code:
void * 
needs_2_args(void *ap) 
{ 
  struct two_args *argp = (struct two_args *) ap; 
  int a1, a2; 

  a1 = argp->arg1; 
  a2 = argp->arg2; 
  free(argp); 
}
I think it should be this way.
 
Old 01-31-2005, 05:03 AM   #3
George_gk
LQ Newbie
 
Registered: Jan 2005
Location: Athens
Posts: 11

Original Poster
Rep: Reputation: 0
Thanks a lot Mara, it is working now.
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Passing arguments to a shell script subu_s Programming 3 09-02-2005 05:13 AM
Problem with passing arguments in Perl bahadur Programming 1 05-30-2005 01:47 AM
C++, indefinite function arguments and multiple constructor passing @_@ R00ts Programming 2 04-08-2005 03:33 PM
A main can be changed by a function local without passing anything to the function? ananthbv Programming 10 05-04-2004 01:31 PM
Handline passing arguments in C AMMullan Programming 9 03-22-2004 01:37 AM


All times are GMT -5. The time now is 07:16 PM.

Main Menu
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
identi.ca: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration