From bd63237c1703420fd2fe1f449c0d88e29f824cbf Mon Sep 17 00:00:00 2001 From: haskal Date: Sat, 11 Apr 2020 04:31:33 -0400 Subject: [PATCH] Fix issue with duplicate flags --- webcrawler | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/webcrawler b/webcrawler index 26dc833..19c4284 100755 --- a/webcrawler +++ b/webcrawler @@ -125,7 +125,7 @@ (define worker-ready (make-vector NUM-TASKS #t)) (define pending (mutable-set root-url)) (define completed (mutable-set)) - (define num-flags (box 0)) + (define flags (mutable-set)) (let loop () (define any-busy (for/or ([r (in-vector worker-ready)]) (not r))) (unless (and (not any-busy) (set-empty? pending)) @@ -148,16 +148,16 @@ (for ([u (in-list new-urls)]) (unless (set-member? completed u) (set-add! pending u))) - (for ([flag (in-list flags)]) + (for ([flag (in-list flags)] #:when (not (set-member? flags flag))) (print-flag flag) - (set-box! num-flags (add1 (unbox num-flags))))) + (set-add! flags flag))) (print-progress (+ (set-count completed) (set-count pending)) (for/sum ([v (in-vector worker-ready)] #:when (not v)) 1) - (set-count completed) (unbox num-flags)) + (set-count completed) (set-count flags)) (loop))) - (print-complete (set-count completed) (unbox num-flags)) + (print-complete (set-count completed) (set-count flags)) ;; send all workers the shutdown message and wait (for ([thd (in-vector worker-threads)]) (thread-send thd #f)