Thread affinity again
Jørgen Lind
jorgen.lind at gmail.com
Thu May 10 01:52:14 PDT 2012
Hi guys.
I have implemented a proposal for thread affinity for libwayland-client.
By this I mean that proxies belong to threads. So events will be
dispatched in the thread that created the proxy. Obviously proxies can
be moved between threads if that is desired.
As a side-effect I also implemented a wl_display_iterate_for_object
which takes a proxy and only dispatches events for that proxy,
effectively queuing up all other events.
Obviously requests can be sent from any thread.
The code is here: https://github.com/jorgen/wayland
I also implemented a test to see if there was any performance
regressions in the single threaded, which showed there wasn't.
Obviously there is a performance hit having multiple threads.
As an implementation note it can be argued that it would be cool if
the "wayland-thread" didn't need to de-marshal the events, but just
copy the data to the connection buffers of the local threads. However,
I didn't think of this when I implemented this, and this would require
additional changes to wl_connection making the change even larger.
Anyway, it can be implemented/fixed later.
Jørgen
More information about the wayland-devel
mailing list