Linux 98.203.178.68.host.secureserver.net 4.18.0-553.164.1.el8_10.x86_64 #1 SMP Thu Sep 17 04:21:10 EDT 2026 x86_64
Apache
Server IP : 68.178.203.98 & Your IP : 216.73.217.130
Domains : 108 Domain
User : lostrivercommuni
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
guile /
2.0 /
ice-9 /
Delete
Unzip
Name
Size
Permission
Date
Action
and-let-star.scm
2.53
KB
-rw-r--r--
2019-10-13 01:10
binary-ports.scm
1.88
KB
-rw-r--r--
2019-10-13 01:10
boot-9.scm
151.09
KB
-rw-r--r--
2019-10-13 01:10
buffered-input.scm
4.82
KB
-rw-r--r--
2019-10-13 01:10
calling.scm
10.54
KB
-rw-r--r--
2019-10-13 01:10
channel.scm
5.19
KB
-rw-r--r--
2019-10-13 01:10
command-line.scm
18.22
KB
-rw-r--r--
2019-10-13 01:10
common-list.scm
8.95
KB
-rw-r--r--
2019-10-13 01:10
control.scm
3.94
KB
-rw-r--r--
2019-10-13 01:10
curried-definitions.scm
1.79
KB
-rw-r--r--
2019-10-13 01:10
debug.scm
1.09
KB
-rw-r--r--
2019-10-13 01:10
deprecated.scm
31.24
KB
-rw-r--r--
2019-10-13 01:10
documentation.scm
7.26
KB
-rw-r--r--
2019-10-13 01:10
eval-string.scm
2.93
KB
-rw-r--r--
2019-10-13 01:10
eval.scm
20.85
KB
-rw-r--r--
2019-10-13 01:10
expect.scm
5.5
KB
-rw-r--r--
2019-10-13 01:10
format.scm
74.5
KB
-rw-r--r--
2019-10-13 01:10
ftw.scm
24.17
KB
-rw-r--r--
2019-10-13 01:10
futures.scm
10.92
KB
-rw-r--r--
2019-10-13 01:10
gap-buffer.scm
10.14
KB
-rw-r--r--
2019-10-13 01:10
getopt-long.scm
16.49
KB
-rw-r--r--
2019-10-13 01:10
hash-table.scm
1.77
KB
-rw-r--r--
2019-10-13 01:10
hcons.scm
2.55
KB
-rw-r--r--
2019-10-13 01:10
history.scm
2.29
KB
-rw-r--r--
2019-10-13 01:10
i18n.scm
17.36
KB
-rw-r--r--
2019-10-13 01:10
iconv.scm
3.65
KB
-rw-r--r--
2019-10-13 01:10
lineio.scm
3.85
KB
-rw-r--r--
2019-10-13 01:10
list.scm
1.29
KB
-rw-r--r--
2019-10-13 01:10
local-eval.scm
9.71
KB
-rw-r--r--
2019-10-13 01:10
ls.scm
3.2
KB
-rw-r--r--
2019-10-13 01:10
mapping.scm
4.84
KB
-rw-r--r--
2019-10-13 01:10
match.scm
2
KB
-rw-r--r--
2019-10-13 01:10
match.upstream.scm
35.6
KB
-rw-r--r--
2019-10-13 01:10
networking.scm
3.33
KB
-rw-r--r--
2019-10-13 01:10
null.scm
1.13
KB
-rw-r--r--
2019-10-13 01:10
occam-channel.scm
7.26
KB
-rw-r--r--
2019-10-13 01:10
optargs.scm
15.75
KB
-rw-r--r--
2019-10-13 01:10
poe.scm
3.3
KB
-rw-r--r--
2019-10-13 01:10
poll.scm
6.02
KB
-rw-r--r--
2019-10-13 01:10
popen.scm
5.67
KB
-rw-r--r--
2019-10-13 01:10
posix.scm
2.73
KB
-rw-r--r--
2019-10-13 01:10
pretty-print.scm
15.83
KB
-rw-r--r--
2019-10-13 01:10
psyntax-pp.scm
162.87
KB
-rw-r--r--
2019-10-13 01:10
psyntax.scm
143.67
KB
-rw-r--r--
2019-10-13 01:10
q.scm
4.2
KB
-rw-r--r--
2019-10-13 01:10
quasisyntax.scm
5.22
KB
-rw-r--r--
2019-10-13 01:10
r4rs.scm
9.42
KB
-rw-r--r--
2019-10-13 01:10
r5rs.scm
1.56
KB
-rw-r--r--
2019-10-13 01:10
r6rs-libraries.scm
8.95
KB
-rw-r--r--
2019-10-13 01:10
rdelim.scm
7.47
KB
-rw-r--r--
2019-10-13 01:10
readline.scm
9.56
KB
-rw-r--r--
2019-10-13 01:10
receive.scm
1.06
KB
-rw-r--r--
2019-10-13 01:10
regex.scm
8.87
KB
-rw-r--r--
2019-10-13 01:10
runq.scm
8.18
KB
-rw-r--r--
2019-10-13 01:10
rw.scm
1.02
KB
-rw-r--r--
2019-10-13 01:10
safe-r5rs.scm
3.72
KB
-rw-r--r--
2019-10-13 01:10
safe.scm
1.25
KB
-rw-r--r--
2019-10-13 01:10
save-stack.scm
2.15
KB
-rw-r--r--
2019-10-13 01:10
scm-style-repl.scm
11.71
KB
-rw-r--r--
2019-10-13 01:10
serialize.scm
3.77
KB
-rw-r--r--
2019-10-13 01:10
session.scm
17.72
KB
-rw-r--r--
2019-10-13 01:10
slib.scm
1.55
KB
-rw-r--r--
2019-10-13 01:10
stack-catch.scm
1.94
KB
-rw-r--r--
2019-10-13 01:10
streams.scm
7.31
KB
-rw-r--r--
2019-10-13 01:10
string-fun.scm
8.59
KB
-rw-r--r--
2019-10-13 01:10
syncase.scm
1.52
KB
-rw-r--r--
2019-10-13 01:10
threads.scm
6.24
KB
-rw-r--r--
2019-10-13 01:10
time.scm
2.04
KB
-rw-r--r--
2019-10-13 01:10
top-repl.scm
2.75
KB
-rw-r--r--
2019-10-13 01:10
unicode.scm
1005
B
-rw-r--r--
2019-10-13 01:10
vlist.scm
21.56
KB
-rw-r--r--
2019-10-13 01:10
weak-vector.scm
1.26
KB
-rw-r--r--
2019-10-13 01:10
Save
Rename
;;;; Copyright (C) 1996, 1998, 2001, 2002, 2003, 2006, 2010, 2011, ;;;; 2012 Free Software Foundation, Inc. ;;;; ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public ;;;; License as published by the Free Software Foundation; either ;;;; version 3 of the License, or (at your option) any later version. ;;;; ;;;; This library is distributed in the hope that it will be useful, ;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;;;; Lesser General Public License for more details. ;;;; ;;;; You should have received a copy of the GNU Lesser General Public ;;;; License along with this library; if not, write to the Free Software ;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ;;;; ;;;; ---------------------------------------------------------------- ;;;; threads.scm -- User-level interface to Guile's thread system ;;;; 4 March 1996, Anthony Green <green@cygnus.com> ;;;; Modified 5 October 1996, MDJ <djurfeldt@nada.kth.se> ;;;; Modified 6 April 2001, ttn ;;;; ---------------------------------------------------------------- ;;;; ;;; Commentary: ;; This module is documented in the Guile Reference Manual. ;; Briefly, one procedure is exported: `%thread-handler'; ;; as well as four macros: `make-thread', `begin-thread', ;; `with-mutex' and `monitor'. ;;; Code: (define-module (ice-9 threads) #:use-module (ice-9 futures) #:use-module (ice-9 match) #:export (begin-thread parallel letpar make-thread with-mutex monitor par-map par-for-each n-par-map n-par-for-each n-for-each-par-map %thread-handler)) ;;; Macros first, so that the procedures expand correctly. (define-syntax-rule (begin-thread e0 e1 ...) (call-with-new-thread (lambda () e0 e1 ...) %thread-handler)) (define-syntax parallel (lambda (x) (syntax-case x () ((_ e0 ...) (with-syntax (((tmp0 ...) (generate-temporaries (syntax (e0 ...))))) #'(let ((tmp0 (future e0)) ...) (values (touch tmp0) ...))))))) (define-syntax-rule (letpar ((v e) ...) b0 b1 ...) (call-with-values (lambda () (parallel e ...)) (lambda (v ...) b0 b1 ...))) (define-syntax-rule (make-thread proc arg ...) (call-with-new-thread (lambda () (proc arg ...)) %thread-handler)) (define-syntax-rule (with-mutex m e0 e1 ...) (let ((x m)) (dynamic-wind (lambda () (lock-mutex x)) (lambda () (begin e0 e1 ...)) (lambda () (unlock-mutex x))))) (define-syntax-rule (monitor first rest ...) (with-mutex (make-mutex) first rest ...)) (define (par-mapper mapper cons) (lambda (proc . lists) (let loop ((lists lists)) (match lists (((heads tails ...) ...) (let ((tail (future (loop tails))) (head (apply proc heads))) (cons head (touch tail)))) (_ '()))))) (define par-map (par-mapper map cons)) (define par-for-each (par-mapper for-each (const *unspecified*))) (define (n-par-map n proc . arglists) (let* ((m (make-mutex)) (threads '()) (results (make-list (length (car arglists)))) (result results)) (do ((i 0 (+ 1 i))) ((= i n) (for-each join-thread threads) results) (set! threads (cons (begin-thread (let loop () (lock-mutex m) (if (null? result) (unlock-mutex m) (let ((args (map car arglists)) (my-result result)) (set! arglists (map cdr arglists)) (set! result (cdr result)) (unlock-mutex m) (set-car! my-result (apply proc args)) (loop))))) threads))))) (define (n-par-for-each n proc . arglists) (let ((m (make-mutex)) (threads '())) (do ((i 0 (+ 1 i))) ((= i n) (for-each join-thread threads)) (set! threads (cons (begin-thread (let loop () (lock-mutex m) (if (null? (car arglists)) (unlock-mutex m) (let ((args (map car arglists))) (set! arglists (map cdr arglists)) (unlock-mutex m) (apply proc args) (loop))))) threads))))) ;;; The following procedure is motivated by the common and important ;;; case where a lot of work should be done, (not too much) in parallel, ;;; but the results need to be handled serially (for example when ;;; writing them to a file). ;;; (define (n-for-each-par-map n s-proc p-proc . arglists) "Using N parallel processes, apply S-PROC in serial order on the results of applying P-PROC on ARGLISTS." (let* ((m (make-mutex)) (threads '()) (no-result '(no-value)) (results (make-list (length (car arglists)) no-result)) (result results)) (do ((i 0 (+ 1 i))) ((= i n) (for-each join-thread threads)) (set! threads (cons (begin-thread (let loop () (lock-mutex m) (cond ((null? results) (unlock-mutex m)) ((not (eq? (car results) no-result)) (let ((arg (car results))) ;; stop others from choosing to process results (set-car! results no-result) (unlock-mutex m) (s-proc arg) (lock-mutex m) (set! results (cdr results)) (unlock-mutex m) (loop))) ((null? result) (unlock-mutex m)) (else (let ((args (map car arglists)) (my-result result)) (set! arglists (map cdr arglists)) (set! result (cdr result)) (unlock-mutex m) (set-car! my-result (apply p-proc args)) (loop)))))) threads))))) (define (thread-handler tag . args) (let ((n (length args)) (p (current-error-port))) (display "In thread:" p) (newline p) (if (>= n 3) (display-error #f p (car args) (cadr args) (caddr args) (if (= n 4) (cadddr args) '())) (begin (display "uncaught throw to " p) (display tag p) (display ": " p) (display args p) (newline p))) #f)) ;;; Set system thread handler (define %thread-handler thread-handler) ;;; threads.scm ends here