This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: strange behavior with threads...
On Jul 23 15:50, jean-luc malet wrote:
> Hi!
> I've the following code :
> void _Window::Start(void* arg)
> {
> ThreadArgs args;
> args.TheWindow=this;
> args.args=arg;
> int err = pthread_create(&main_thread,NULL,_Start, (void*)&args);
> if (err)
> {
> throw new Exception(err, "window thread creation error");
> }
> }
> void* _Window::_Start(void* arg)
> {
> ThreadArgs* args = (ThreadArgs*) arg;
> pthread_exit((void*)args->TheWindow->start_routine(args->args));
> }
>
> _Window::_Start is static
>
> for some reason that I can't determine it happens that args in
> _Window::_Start have strange value (args->TheWindow don't contain a
> valid pointer, ie a pointer on a _Window object)
Maybe you shouldn't let the arg to the thread point to a local
stack-based variable in the other method which, as you code implies,
returns after having started the thread...
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple