Kaynağa Gözat

refactor(worker): use write blocking for semaphore

bigeagle 9 yıl önce
ebeveyn
işleme
26b7ef9a9c
2 değiştirilmiş dosya ile 2 ekleme ve 4 silme
  1. 2 2
      worker/job.go
  2. 0 2
      worker/job_test.go

+ 2 - 2
worker/job.go

@@ -138,8 +138,8 @@ func runMirrorJob(provider mirrorProvider, ctrlChan <-chan ctrlAction, managerCh
 
 	runJob := func(kill <-chan empty, jobDone chan<- empty) {
 		select {
-		case <-semaphore:
-			defer func() { semaphore <- empty{} }()
+		case semaphore <- empty{}:
+			defer func() { <-semaphore }()
 			runJobWrapper(kill, jobDone)
 		case <-kill:
 			jobDone <- empty{}

+ 0 - 2
worker/job_test.go

@@ -66,7 +66,6 @@ func TestMirrorJob(t *testing.T) {
 				ctrlChan := make(chan ctrlAction)
 				managerChan := make(chan struct{})
 				semaphore := make(chan empty, 1)
-				semaphore <- empty{}
 
 				go runMirrorJob(provider, ctrlChan, managerChan, semaphore)
 				for i := 0; i < 2; i++ {
@@ -105,7 +104,6 @@ echo $TUNASYNC_WORKING_DIR
 			ctrlChan := make(chan ctrlAction)
 			managerChan := make(chan struct{})
 			semaphore := make(chan empty, 1)
-			semaphore <- empty{}
 
 			Convey("If we kill it", func(ctx C) {
 				go runMirrorJob(provider, ctrlChan, managerChan, semaphore)