From 0e24dbe6be50002e4837ba6a1c0bf5f988aaf1c3 Mon Sep 17 00:00:00 2001 From: Effie Date: Tue, 13 Feb 2024 20:10:43 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20semaphore=20signal=20=EB=88=84=EB=9D=BD?= =?UTF-8?q?=EB=90=9C=20=EB=B6=80=EB=B6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BankManagerUIApp/ViewModel/BankViewModel.swift | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/BankManagerUIApp/BankManagerUIApp/ViewModel/BankViewModel.swift b/BankManagerUIApp/BankManagerUIApp/ViewModel/BankViewModel.swift index 4b537e14..df4843df 100644 --- a/BankManagerUIApp/BankManagerUIApp/ViewModel/BankViewModel.swift +++ b/BankManagerUIApp/BankManagerUIApp/ViewModel/BankViewModel.swift @@ -66,7 +66,10 @@ extension BankViewModel: BankManagerDelegate { self.waitingSemaphore.wait() guard let index = self.waitingList.firstIndex(where: { target in client == target }) - else { return } + else { + self.waitingSemaphore.signal() + return + } self.waitingList.remove(at: index) self.waitingSemaphore.signal() } @@ -76,7 +79,7 @@ extension BankViewModel: BankManagerDelegate { DispatchQueue.global().async { self.waitingSemaphore.wait() self.waitingList.append(client) - self.waitingSemaphore.signal() + self.waitingSemaphore.signal() } } @@ -85,7 +88,10 @@ extension BankViewModel: BankManagerDelegate { self.workingSemaphore.wait() guard let index = self.workingList.firstIndex(where: { target in client == target }) - else { return } + else { + self.workingSemaphore.signal() + return + } self.workingList.remove(at: index) self.workingSemaphore.signal() } @@ -102,9 +108,11 @@ extension BankViewModel: BankManagerDelegate { func handleClearClient() { DispatchQueue.global().async { self.waitingSemaphore.wait() + self.workingSemaphore.wait() self.waitingList.removeAll() self.workingList.removeAll() self.waitingSemaphore.signal() + self.workingSemaphore.signal() } }