Re: [Qemu-devel] Re: [PATCH V3 1/3] qemu: Add qemu-wrappers for pthread_attr_t

2010-06-10 Thread Gautham R Shenoy
On Fri, Jun 04, 2010 at 03:19:34PM +0200, Corentin Chary wrote:
 On Fri, Jun 4, 2010 at 3:07 PM, Anthony Liguori anth...@codemonkey.ws wrote:
  On 06/03/2010 07:31 AM, Paolo Bonzini wrote:
 
  On 06/03/2010 10:56 AM, Gautham R Shenoy wrote:
 
  Add qemu wrappers for pthread_attr_t handling.
 
  The point of these wrappers AFAIU is not only to add error_exit, but also
  to be portable to Windows in the future.  Is it necessary to create the
  threads as detached?  If you set queue-min_threads to zero all threads
  should exit as soon as they finish their work (which is better than exiting
  immediately).
 
  This is historical because the code was largely inspired by glibc's
  implementation of posix-aio.  It doesn't need to be detached and since
  Corentin wants to be able to join a worker, it makes sense to just avoid
  detaching and pay the overhead of making the threads joinable.
 
  Regards,
 
  Anthony Liguori


Sorry for the late response. I had been away for the last few days.

 Actually, I want to know if the queue is empty and if no job are
 currently being processed: all worker are idle or stopped.

In other words, you just want to know if the already submitted jobs
have gotten over or not so that you could probably destroy the queue.

The subsystem using the queueing infrastructure is responsible for providing
the guarantee that no new job would be submitted while/after making a call
query the idleness of the queue.

If this understanding is correct, we might want to have a
qemu_async_barrier() implementation which waits for all the threads
finish processing the queued jobs, and destroy themselves.

I don't really need pthread_join() for that, since worker can be idle (we
 don't want to always start and stop the thread :) ).

-- 
Thanks and Regards
gautham



Re: [Qemu-devel] Re: [PATCH V3 1/3] qemu: Add qemu-wrappers for pthread_attr_t

2010-06-04 Thread Anthony Liguori

On 06/03/2010 07:31 AM, Paolo Bonzini wrote:

On 06/03/2010 10:56 AM, Gautham R Shenoy wrote:

Add qemu wrappers for pthread_attr_t handling.


The point of these wrappers AFAIU is not only to add error_exit, but 
also to be portable to Windows in the future.  Is it necessary to 
create the threads as detached?  If you set queue-min_threads to zero 
all threads should exit as soon as they finish their work (which is 
better than exiting immediately).


This is historical because the code was largely inspired by glibc's 
implementation of posix-aio.  It doesn't need to be detached and since 
Corentin wants to be able to join a worker, it makes sense to just avoid 
detaching and pay the overhead of making the threads joinable.


Regards,

Anthony Liguori


Paolo






Re: [Qemu-devel] Re: [PATCH V3 1/3] qemu: Add qemu-wrappers for pthread_attr_t

2010-06-04 Thread Corentin Chary
On Fri, Jun 4, 2010 at 3:07 PM, Anthony Liguori anth...@codemonkey.ws wrote:
 On 06/03/2010 07:31 AM, Paolo Bonzini wrote:

 On 06/03/2010 10:56 AM, Gautham R Shenoy wrote:

 Add qemu wrappers for pthread_attr_t handling.

 The point of these wrappers AFAIU is not only to add error_exit, but also
 to be portable to Windows in the future.  Is it necessary to create the
 threads as detached?  If you set queue-min_threads to zero all threads
 should exit as soon as they finish their work (which is better than exiting
 immediately).

 This is historical because the code was largely inspired by glibc's
 implementation of posix-aio.  It doesn't need to be detached and since
 Corentin wants to be able to join a worker, it makes sense to just avoid
 detaching and pay the overhead of making the threads joinable.

 Regards,

 Anthony Liguori

Actually, I want to know if the queue is empty and if no job are
currently being processed: all worker are idle or stopped. I don't
really need pthread_join() for that, since worker can be idle (we
don't want to always start and stop the thread :) ).



-- 
Corentin Chary
http://xf.iksaif.net



Re: [Qemu-devel] Re: [PATCH V3 1/3] qemu: Add qemu-wrappers for pthread_attr_t

2010-06-04 Thread Paolo Bonzini

On 06/04/2010 03:19 PM, Corentin Chary wrote:

The point of these wrappers AFAIU is not only to add error_exit, but also
to be portable to Windows in the future.


This is historical because the code was largely inspired by glibc's
implementation of posix-aio.  It doesn't need to be detached and since
Corentin wants to be able to join a worker, it makes sense to just avoid
detaching and pay the overhead of making the threads joinable.


Actually, I want to know if the queue is empty and if no job are
currently being processed: all worker are idle or stopped. I don't
really need pthread_join() for that, since worker can be idle (we
don't want to always start and stop the thread :) ).


Then it's also fine to have all qemu_threads detached (like in my patch 
to create all qemu_threads with blocked signals).  I just want to avoid 
implementing pthreads one day for qemu-threads-win32.c.


Paolo



[Qemu-devel] Re: [PATCH V3 1/3] qemu: Add qemu-wrappers for pthread_attr_t

2010-06-03 Thread Paolo Bonzini

On 06/03/2010 10:56 AM, Gautham R Shenoy wrote:

Add qemu wrappers for pthread_attr_t handling.


The point of these wrappers AFAIU is not only to add error_exit, but 
also to be portable to Windows in the future.  Is it necessary to create 
the threads as detached?  If you set queue-min_threads to zero all 
threads should exit as soon as they finish their work (which is better 
than exiting immediately).


Paolo