On 2013/08/13 10:03:43, Yury Semikhatsky wrote:
On 2013/08/13 09:31:32, Benedikt Meurer wrote:
> I don't think the new implementation actually improves the situation.
The
case
> for multiple producers is still not handled correctly. We need to
cleanup
this
> whole thing. See my comments below for suggestions how to proceed.
CC'ing
Sven
> for additional feedback.
>
Multiple producers is explicit non-goal for this implementation. The
queue is
supposed to be used as SPSC one as there is always a dedicated processing
thread
for the profiled one.
>
https://codereview.chromium.org/22849002/diff/2001/src/circular-queue-inl.h
> File src/circular-queue-inl.h (right):
>
>
https://codereview.chromium.org/22849002/diff/2001/src/circular-queue-inl.h#newcode50
> src/circular-queue-inl.h:50: }
> This assumes that there is always only a single producer, but this is
not
always
> the case, for example in Chrome on Linux with profiled web worker
threads,
and
> maybe some other scenarios. We should get this right now while we're at
it.
>
Each web worker uses its own isolate and its own processing thread. The
implementation explicitly assumes that we have 1 to 1 relation between
profiled
threads and processing ones so there is no need for MPSC queue. The
profiler
event processing thread doesn't support events from multiple threads.
If there's a 1:1 relationship between profiled and profiler threads, then
there
is no need for a queue at all. The profiler thread could just suspend the
profiled thread, collect the sample and resume the profiled thread. This is
easy
on Mac and Windows where we have thread_suspend/ThreadSuspend. For Linux,
Solaris and *BSD we may need to use semaphores and pthread_kill().
https://codereview.chromium.org/22849002/
--
--
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.