Posted to tcl by bairui at Mon Feb 15 00:05:08 GMT 2016view raw
- #! /usr/bin/env tclsh
- package require Thread
- package require promise
- # "works" in that it returns results,
- # but understandably synchronous.
- set promises [lmap path $argv {promise::Promise new [promise::lambda {path prom} {
- set command "exec -ignorestderr du -sk"
- lappend command $path
- lappend command "2>/dev/null"
- try {
- set result [{*}$command]
- } on error {result opts} {
- # spurious, fragile and specific to du command on linux
- set result [concat {*}[lrange [split $result "\n"] end-1 end-1]]
- }
- puts $result
- return $result
- } $path]}]
- set all_done [promise::all $promises]
- $all_done then [promise::lambda {outputs} {
- foreach output $outputs {puts $output}
- }]
- vwait forever