Rogue Wave banner
Previous fileTop of DocumentContentsIndexNext file

rwtMakeThreadIOUFunction


Global Functions and Macros

Data Type and Member Function Indexes
(exclusive of constructors and destructors)

Member Functions

Package

Threading

Synopsis

#include <rw/thread/rwtMakeThreadIOUFunction.h>
int foo(void);
RWTThreadIOUFunction<int> threadFunc 
                             = rwtMakeThreadIOUFunction(foo);

Description

The easiest way to create a thread with Threads.h++ is to begin with rwtMakeThreadIOUFunction. By supplying a global or member function pointer, you control what your thread will do after starting. If you wish your thread to start by calling a function that takes arguments, rwtMakeThreadIOUFunction allows you to specify the values that should be passed to that function. Note that threads created with rwtMakeThreadIOUFunction allow you to extract the return value from the associated function. This distinguishes them from those created by rwtMakeThreadFunction, which do not.

rwtMakeThreadIOUFunction comes in two flavors. First, there is a set of overloaded global function templates. Since not all compilers are able to handle templates to the degree required by these functions, we also provide a corresponding set of macros. The template functions are slightly easier to use and you only have to remember one name. The macros are more portable but they do require more arguments; and as we cannot overload macros, each must have a unique name.

In naming the macros we have employed a convention to make the names easier to remember. Each name begins with rwtMakeThreadIOUFunction, which will be followed by either a G if the macro is expecting a global function, or an M if it is expecting a member function. At that point the name is complete if the associated global or member function takes no arguments. Otherwise we add one of A1, A2, or A3 for functions with 1, 2, or 3 arguments respectively. For example, you will use macro rwtMakeThreadIOUFunctionG to create a thread that calls a global function that takes no arguments. The macro rwtMakeThreadIOUFunctionMA2 will create a thread that calls a member function that takes two arguments.

Example Using Templates

Example Using Macros

Global Function Templates

template <class R>
RWTThreadIOUFunction<R> 
rwtMakeThreadIOUFunction(R (*function)(void))
template <class R, class A1, class AA1>
RWTThreadIOUFunction<R> 
rwtMakeThreadIOUFunction(R (*function)(A1), AA1 a1)
template <class R, class A1, class A2, class AA1, class AA2>
RWTThreadIOUFunction<R> 
rwtMakeThreadIOUFunction(R (*function)(A1,A2), AA1 a1, AA2 a2)
template <class R, class A1, class A2, class A3, 
          class AA1, class AA2, class AA3>
RWTThreadIOUFunction<R> 
rwtMakeThreadIOUFunction(R (*function)(A1,A2,A3), 
                        AA1 a1, AA2 a2,AA3 a3)
template <class Callee, class R>
RWTThreadIOUFunction<R> 
rwtMakeThreadIOUFunction(Callee& callee,
                        R (Callee::*function)(void))
template <class Callee, class R, class A1, class AA1>
RWTThreadIOUFunction<R>
rwtMakeThreadIOUFunction(Callee& callee,
                        R (Callee::*function)(A1), AA1 a1)
template <class Callee, class R, class A1, class A2, 
           class AA1, class AA2>
RWTThreadIOUFunction<R> 
rwtMakeThreadIOUFunction(Callee& callee,
                R (Callee::*function)(A1,A2), AA1 a1, AA2 a2)
template <class Callee, class R, class A1, class A2, class A3,
          class AA1, class AA2, class AA3>
RWTThreadIOUFunction<R> 
rwtMakeThreadIOUFunction(Callee& callee, 
      R (Callee::*function)(A1,A2,A3), AA1 a1, AA2 a2, AA3 a3)

Macros
(for Use With
Global Functions)

The macros in this section use the following naming conventions for the macro arguments:

rwtMakeThreadIOUFunctionG(R,function)
rwtMakeThreadIOUFunctionGA1(R,function,A1,a1)
rwtMakeThreadIOUFunctionGA2(R,function,A1,a1,A2,a2)
rwtMakeThreadIOUFunctionGA3(R,function,A1,a1,A2,a2,A3,a3)

Macros
(for Use With Member Functions)

The macros in this section use the following naming conventions for the macro arguments:

rwtMakeThreadIOUFunctionM(Callee,callee,R,function) 
rwtMakeThreadIOUFunctionMA1(Callee,callee,R,function,A1,a1) 
rwtMakeThreadIOUFunctionMA2(Callee,callee,R,function,A1,a1,
A2,a2)
rwtMakeThreadIOUFunctionMA3(Callee,callee,R,function,
A1,a1,A2,a2,A3,a3)

See Also

RWTThreadIOUFunction<Return>



Previous fileTop of DocumentContentsIndexNext file

©Copyright 2000, Rogue Wave Software, Inc.
Contact Rogue Wave about documentation or support issues.