[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: thread problem
- From: Tristan Van Berkom <vantr touchtunes com>
- To: Bart Vandewoestyne pandora be
- Cc: gtk-app-devel-list gnome org
- Subject: Re: thread problem
- Date: Mon, 28 Jul 2003 12:17:34 -0400
Bart Vandewoestyne wrote:
>The problem is simple:
>
>I have a START and a STOP button in my gtk application. The start
>button has a callback in which a g_thread is being started. Within that
>thread, I'm continuously downloading a stream until the user decides to
>stop by pressing the 'STOP' button.
>
>Now the problem is that i don't know how to interrupt the continously
>downloading thread by pressing the stop button.
>
>Obviously, the callback of STOP has to do something, but i don't know
>what. Is there some way that i can make the stop button stop the other
>thread that is running (somehow the same as you would end the
>application by pressing Ctrl-C) ?
>
>Full source code with Makefile is under the src/ directory in
>mc303.ulyssis.org/downloads/mms_gui.tar.gz for those who want to
>investigate. grep for the 'go_clicked' callback to understand what I'm
>talking about.
>
>Greetzzz,
>Bart
>
>
>
you could take a number of aproaches, here are 2
1.) if you dont care about the child thread's data at the time
you press "STOP" then you could use kill(2).
2.) if you want to do things a little cleaner you could:
in child thread {
//loop in small itterations
//and always check:
g_mutex_lock(stop_mutex);
if (stop_variable) {
// cleanup code:
g_mutex_unlock(stop_mutex);
exit(0);
}
g_mutex_unlock(stop_mutex);
}
in parent thread {
g_mutex_lock(stop_mutex);
stop_variable = TRUE;
g_mutex_unlock(stop_mutex);
g_thread_join(...);
}
Cheers,
-Tristan
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]