You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SerialTasksTests 파일에서 arr 에 순차적으로 0부터 1000 까지 데이터가 추가되는지에 대한 테스트를 작성함 -> 0부터 499, 500부터 1000까지 추가하는 async Task 를 두 개 만들고, 이것을 전부 serial Task Queue 에다가 추가함 -> 0부터 1000까지 정상적으로 출력됨
0부터 1000까지 데이터가 순차적으로 추가되지않는 상황에 대해 테스트를 작성함 -> 0부터 499, 500부터 1000까지 추가하는 async task 를 두 개 만들고, 이것을 그대로 병렬적으로 실행시킴으로써 0부터 1000까지 순차적으로 추가되지 않는 테스트를 작성함 -> actor 를 활용해 shared mutable state 인 arr 에 대한 race condition 을 방지함
---- 14:57 -----
그러나 위의 방법도 완벽한 sync task 를 지원하는 것은 아닌듯 하다. 왜냐하면 serial Task 에 task 를 추가하기 위해선 또 다른 async context 가 필요한데, 이에 Task 를 생성해야함. 그러나 Task 자체가 synchronous 하게 생성되지 않기 때문에, 원하는 결과를 얻지 못했다....
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
References
https://stackoverflow.com/questions/70540541/swift-5-5-concurrency-how-to-serialize-async-tasks-to-replace-an-operationqueue
async task 를 serial 하게 실행하는 방법으로, actor 를 활용해 previous Task 가 끝날 때 까지 기다리고 다음에 추가된 task 를 실행하는 방법인듯! 조금 더 공부를 해봐야 할 것 같음.
9b2f89d 커밋에서 실제로 serial 하게 동작하는지에 대한 테스트를 추가하였다!
SerialTasksTests 파일에서 arr 에 순차적으로 0부터 1000 까지 데이터가 추가되는지에 대한 테스트를 작성함 -> 0부터 499, 500부터 1000까지 추가하는 async Task 를 두 개 만들고, 이것을 전부 serial Task Queue 에다가 추가함 -> 0부터 1000까지 정상적으로 출력됨
0부터 1000까지 데이터가 순차적으로 추가되지않는 상황에 대해 테스트를 작성함 -> 0부터 499, 500부터 1000까지 추가하는 async task 를 두 개 만들고, 이것을 그대로 병렬적으로 실행시킴으로써 0부터 1000까지 순차적으로 추가되지 않는 테스트를 작성함 -> actor 를 활용해 shared mutable state 인 arr 에 대한 race condition 을 방지함
---- 14:57 -----
---- 15:48 -----
Beta Was this translation helpful? Give feedback.
All reactions