- From: David Levin <levin@chromium.org>
- Date: Thu, 2 Jun 2011 16:41:12 -0700
- To: Jonas Sicking <jonas@sicking.cc>
- Cc: Glenn Maynard <glenn@zewt.org>, Kenneth Russell <kbr@google.com>, ben turner <bent.mozilla@gmail.com>, "public-webapps@w3.org" <public-webapps@w3.org>
- Message-ID: <BANLkTikCE8+3PpcZtyJfkwLhD01fcVhEHw@mail.gmail.com>
On Thu, Jun 2, 2011 at 4:24 PM, Jonas Sicking <jonas@sicking.cc> wrote: > On Thu, Jun 2, 2011 at 2:01 PM, David Levin <levin@chromium.org> wrote: > > > > > > On Thu, Jun 2, 2011 at 1:27 PM, Glenn Maynard <glenn@zewt.org> wrote: > >> port.postMessage({frameBuffer: frame}, {transfer: [frame], ports: > >> [port]}); > > There are two properties of this approach that I like: > > 1. It means that objects which you'd like to transfer ownership are > not "second class citizens" and can live as part of the normal object > graph that is posted, together with metadata that goes with it (or > even as metadata for other things). > > 2. The receiving side doesn't need to worry about the difference, all > it gets is the graph of objects that was sent to it. > Yep, I totally agree with this. All of the current solutions being discussed satisfy both of these in fact. > > > It also raises questions when I see it. When I list an object there does > it > > imply that all children are also transfered or do I have to list each of > > them explicitly as well?) > > None of the objects which allow transferring of ownership has children > so this doesn't appear to be a problem at this time. If it indeed does > turn into a problem, it would seem like a problem no matter what > solution is used, no? > Not if all objects are transferred. > > Then I wonder what is the use case for this complexity. > > Why not something simpler like this? > > port.postMessage({frameBuffer: frame}, {transfer: true, ports: > [port]}); > > where you can just say indicate that you want the message transfered. > > This means that you have to choose between transferring all arrays and > transferring none of them. Yep, why add the complication of picking individual items to transfer over? (I'm wary of second system syndrome, which I've seen happen many times in various designs.) > It also makes it much less explicit which > objects ends up being mutated. > It is all of them. Here's a simple use case, suppose I create an array of arrays (a 2d array) which contains ArrayBuffers.Now I want to transfer this as fast as possible using postMessage. What does my code look like for each of these apis? dave
Received on Thursday, 2 June 2011 23:41:58 UTC