4 ms·
There was a whole raft of discussions in 2006 on Lambda the Ultimate and elsewhere about using continuations for page flow in webapps, and ultimately the most p
by ianso 15y ago
There was a whole raft of discussions in 2006 on Lambda the Ultimate and elsewhere about using continuations for page flow in webapps, and ultimately the most persuasive argument (against) was that continuations implied linear flow whereas web-page flow could be non-linear, what with the back button, hyperlinks, and all that.
However, I think that continuations are still very cool, and are especially cool when they can be serialized or written to disk/transmitted/etc., because this essentially lets you "time/space-shift" your thread/process, since it's just bits.
Right now, "suspending" a process is something that happens when you close your laptop or pause a VM, but I think that being able to do this at a much more fine-grained level of detail is what will allow general cloud-based computation to really take off, because individual threads would be portable across computing environments.
- profquail 15y agoCheck out the paper "Modeling Web Interactions", it talks about using continuations to model web-based control flow: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.11.8840 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.11.8... PG has also done some work in this area: http://www.paulgraham.com/avg.html http://www.paulgraham.com/avg.html
- waterhouse 15y agoBtw, it is possible to suspend Unix processes from the command line by sending them the SIGSTOP signal. ;playing a song with iTunes $ ps ax | grep iTunes 401 ?? S 5:29.21 /Applications/iTunes.app/Contents/MacOS/iTunes -psn_0_213044 $ kill -STOP 401 ;the song stops playing, and iTunes's CPU usage drops to zero $ kill -CONT 401 ;the song resumes exactly where it was I've done this to, say, Firefox, and resumed it sometime later with no ill effects that I've been able to detect. (Firefox usually has a secondary Flash plugin process; the interaction between the two when one is suspended is kind of interesting, but seemingly benign.) I've found this useful when I've wanted to throttle some application's CPU/other resource usage (usually on a laptop) but didn't want to completely quit it. Also it's just kind of awesome.
- ianso 15y agoThat is awesome! I wonder if the process could be read out via procfs and continued elsewhere?
- gwern 15y agoI dunno about procfs, but one Linux implementation of https://en.wikipedia.org/wiki/Application_checkpointing https://en.wikipedia.org/wiki/Application_checkpointing is http://cryopid.berlios.de/ http://cryopid.berlios.de/ or apparently http://dmtcp.sourceforge.net/ http://dmtcp.sourceforge.net/
- nemoniac 15y agoThere has been a whole bunch of approaches to this over the years, some of them kernel level and others in user space. Search for "checkpoint restart" to find some links or start here: http://checkpointing.org/ http://checkpointing.org/ It's all pretty dated though. I did some work on it years ago but it's no longer maintained http://www.science.uva.nl/research/scs/Software/ckpt/ckpt.html http://www.science.uva.nl/research/scs/Software/ckpt/ckpt.ht...
- rcfox 15y agoYou could also do: kill -STOP `pidof iTunes` (I have no idea if pidof is included in OSX. It exists in Debian systems though!)
- jpitz 15y agoPidof does not seem to be included in 10.6. HomeBrew has it, MacPorts could not find it.
- waterhouse 15y ago"killall -STOP iTunes" works well enough too.