[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: Ho to implement new GSource?
- From: Chris Vine <chris cvine freeserve co uk>
- To: Tomasz Jankowski <tomcioj gmail com>
- Cc: gtk-app-devel-list gnome org
- Subject: Re: Ho to implement new GSource?
- Date: Thu, 26 Mar 2009 11:38:12 +0000
On Thu, 26 Mar 2009 12:17:17 +0100
Tomasz Jankowski <tomcioj gmail com> wrote:
>
> Hello!
>
> I'm working on MT application, which perform some tasks in separated
> threads. My application also use GTK+ and it should work on Windows,
> so I need to deal somehow with running all functions, which change
> GUI from one thread.
>
> I run one thread with GTK's main loop and i want to implement new
> source, which will check GAsysnQueue for new elements (passed to it
> by other threads) and perform some actions (like updating progress
> bars).
>
> I went to GLib documentation and i stuck there. I'm unable to figure
> out how main loop works and how can I correctly implement new source
> type. I cannot use idle source, because I want to check my async
> queue more often. On the other hand I want to understand how main
> loop works in GLib.
You can use g_idle_add(), and any custom GSource object you make is
going to have to do something very similar. In unix what g_idle_add()
does is put a byte in a pipe on which the main loop has a file
descriptor poll. In windows I think it uses a windows thread event
object.
Instead of worker threads placing things in a GAsyncQueue, you can pass
them as a data argument when they call g_idle_add(). Or if there is a
special reason to do so you can pass the data onto a queue, and your
idle function can pop it off again.
Chris
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]