Did you know LQ has a Linux Hardware Compatibility List?
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, 06: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, 04:15 PM   #2
Registered: Feb 2002
Location: Grenoble
Distribution: Debian
Posts: 9,551

Rep: Reputation: 161Reputation: 161
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, 06: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 06:13 AM
Problem with passing arguments in Perl bahadur Programming 1 05-30-2005 02:47 AM
C++, indefinite function arguments and multiple constructor passing @_@ R00ts Programming 2 04-08-2005 04:33 PM
A main can be changed by a function local without passing anything to the function? ananthbv Programming 10 05-04-2004 02:31 PM
Handline passing arguments in C AMMullan Programming 9 03-22-2004 02:37 AM

All times are GMT -5. The time now is 09:12 PM.

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