diff options
author | Yuriy Glukhov <yglukhov@users.noreply.github.com> | 2018-01-22 15:52:22 +0300 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2018-01-22 13:52:22 +0100 |
commit | ecbbefcc83c3e2b95b3f9abcad17424820c10997 (patch) | |
tree | b8f12e9832270ba038dff2191bd84e4132233a57 /lib/pure/concurrency | |
parent | 45c02af2b5af0caecbdd163c0a1077a194530eaf (diff) | |
download | Nim-ecbbefcc83c3e2b95b3f9abcad17424820c10997.tar.gz |
Fallback to doNothing if /proc/loadavg cant be opened (#7123)
Diffstat (limited to 'lib/pure/concurrency')
-rw-r--r-- | lib/pure/concurrency/cpuload.nim | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/lib/pure/concurrency/cpuload.nim b/lib/pure/concurrency/cpuload.nim index db5f47407..1ec739485 100644 --- a/lib/pure/concurrency/cpuload.nim +++ b/lib/pure/concurrency/cpuload.nim @@ -60,17 +60,20 @@ proc advice*(s: var ThreadPoolState): ThreadPoolAdvice = proc fscanf(c: File, frmt: cstring) {.varargs, importc, header: "<stdio.h>".} - var f = open("/proc/loadavg") - var b: float - var busy, total: int - fscanf(f,"%lf %lf %lf %ld/%ld", - addr b, addr b, addr b, addr busy, addr total) - f.close() - let cpus = countProcessors() - if busy-1 < cpus: - result = doCreateThread - elif busy-1 >= cpus*2: - result = doShutdownThread + var f: File + if f.open("/proc/loadavg"): + var b: float + var busy, total: int + fscanf(f,"%lf %lf %lf %ld/%ld", + addr b, addr b, addr b, addr busy, addr total) + f.close() + let cpus = countProcessors() + if busy-1 < cpus: + result = doCreateThread + elif busy-1 >= cpus*2: + result = doShutdownThread + else: + result = doNothing else: result = doNothing else: |