qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 3/3] iothread: delay the context release to fina


From: Fam Zheng
Subject: Re: [Qemu-devel] [PATCH 3/3] iothread: delay the context release to finalize
Date: Fri, 22 Sep 2017 21:09:22 +0800
User-agent: Mutt/1.8.3 (2017-05-23)

On Fri, 09/22 16:56, Peter Xu wrote:
> When gcontext is used with iothread, the context will be destroyed
> during iothread_stop().  That's not good since sometimes we would like
> to keep the resources until iothread is destroyed, but we may want to
> stop the thread before that point.

Would be nice if you can also mention the glib bug that "required" this in the
commit message.

Reviewed-by: Fam Zheng <address@hidden>

> 
> Delay the destruction of gcontext to iothread finalize.  Then we can do:
> 
>   iothread_stop(thread);
>   some_cleanup_on_resources();
>   iothread_destroy(thread);
> 
> Signed-off-by: Peter Xu <address@hidden>
> ---
>  iothread.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/iothread.c b/iothread.c
> index 894756b..b95369b 100644
> --- a/iothread.c
> +++ b/iothread.c
> @@ -71,8 +71,6 @@ static void *iothread_run(void *opaque)
>              g_main_loop_unref(loop);
>  
>              g_main_context_pop_thread_default(iothread->worker_context);
> -            g_main_context_unref(iothread->worker_context);
> -            iothread->worker_context = NULL;
>          }
>      }
>  
> @@ -117,6 +115,10 @@ static void iothread_instance_finalize(Object *obj)
>      IOThread *iothread = IOTHREAD(obj);
>  
>      iothread_stop(iothread);
> +    if (iothread->worker_context) {
> +        g_main_context_unref(iothread->worker_context);
> +        iothread->worker_context = NULL;
> +    }
>      qemu_cond_destroy(&iothread->init_done_cond);
>      qemu_mutex_destroy(&iothread->init_done_lock);
>      if (!iothread->ctx) {
> -- 
> 2.7.4
> 
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]