Welcome to the most active Linux Forum on the web.
Go Back > Forums > Non-*NIX Forums > Programming
User Name
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.


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

Rep: Reputation: 0
Passing Arguments into the Thread Function


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 *);

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;

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,
Old 01-28-2005, 03:15 PM   #2
Registered: Feb 2002
Location: Grenoble
Distribution: Debian
Posts: 9,569

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

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

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

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


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 05:47 AM.

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