Jim Peters wrote: > > Threads are allocated on multiple cores nowadays and you can use > > lock-free data structures when possible. Still you didn't provide > > any benchmark, only thoughts. > > We are both putting forward "only thoughts". > > To prove my point I will have to implement simple coroutines in Vala > using low-level C stuff, i.e. setcontext/makecontext/etc. I guess a > Coroutine class could be useful for something someday. Give me a > moment ...
Actually, even though Serge was starting off two threads in his example, and the GIO docs claim that async stuff uses GThread, the async code from Generator doesn't use them. It all runs in a single thread. I just traced through the loop with GDB and checked the GLib source. So everything I said about the cost of kernel context switches doesn't apply. Also the stuff you said about multiple cores and lock-free data structures doesn't apply either. So things aren't as they seemed. Sorry for the distraction. Incidentally, the rules for use of async functions aren't that clear. In your Generator you're calling an async function 'helper()' from a non-async function 'new Generator()'. Reading the C, I can kind of see how it is working. Is there any good web page on the theory of async stuff, either in Vala or C? Jim -- Jim Peters (_)/=\~/_(_) [email protected] (_) /=\ ~/_ (_) UazĂș (_) /=\ ~/_ (_) http:// in Peru (_) ____ /=\ ____ ~/_ ____ (_) uazu.net _______________________________________________ vala-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/vala-list
