Releases: J0onYEong/SimpleImageProvider
Releases · J0onYEong/SimpleImageProvider
[1.0.4] Deadlock문제 해결, SwiftUI, UIKit활용 코드 수정
변경된 점
데드락 문제해결
이전 버전의 코드는 Swift concurrency
와 DispatchQueue
를 혼용하여 사용하고 있었습니다.
DispatchQueue의 경우 성능을 높이기 위해 기본적으로 동시성 큐를 사용하고 읽기작업의 경우 sync로 작업을
쓰기 작업에 한해서만 barrier플래그를 사용하여 값타입에 대한 동시성 문제를 방지하였습니다.
하지만, 몇몇 경우에 데드락이 발생하는 문제가 있었습니다.
원인을 분석한 결과 DispatchQueue에 작업이 무한대기 하는 현상이 지속적으로 관찰되었습니다.
디버깅 걀과 Task가 DispatchQueue에 sync작업을 호출하는 경우에 발생하는 것을 확인할 수 있었습니다.
이 현상은 DispatchQueue사용시 주의해야 하는 부분과 비슷한 문제로, 동기작업을 등록하는 쓰레드와 동기작업이 실행되는 쓰레드가 같은 경우 발생하는 데드락 현상이라고 생각됩니다.
DispatchQueue의 경우 위와 같은 문제를 피하기 위해 서로다른 쓰레드 풀을(qos변경을 통한) 사용하는 등 할 수 있지만, Swift concurrency와 GCD의 쓰레드 관리 차이로 인해 발생한 문제로 생각됩니다.
결론
해당 문제를 해결하기 위해 DispatchQueue를 삭제하고 모든 동시성 처리 과정을 Actor로 변경했습니다.
[1.0.3] SimpleImageView, LazyVStack최적화
변경된 점
#1 이슈를 해결하였습니다, 자세한 내역은 해당 이슈 확인 부탁드립니다.
[1.0.2] Swift지원버전 설정
변경된 점
Swift 최소지원 버전을 5.9로 설정했습니다.
[1.0.1] 기타 버그 수정
[1.0.0] SimpleImageProvider, Initial Release
Initial relase
All features are described on Readme.md thanks