작성
·
55
답변 2
0
민철님,
어디서 제가 그런 언급을 드렸을까요?
오퍼레이션(작업 한개) 자체가 동기적이라고 말씀드렸지, 오퍼레이션 큐(대기열)는 아닐텐데요?
(제가 그런 언급을 드렸다면, 몇강 몇분 몇초의 내용인지 말씀부탁드려요. 어떤 의미로 말씀드렸는지, 저도 확인을 해봐야 하니까요.)
그냥 오퍼레이션을 한개 만들면 (쉽게 말하자면, 그냥 함수 호출 같은 작업 하나라고 생각하면) 그건 기본적으로 동기적으로 동작한다는 차원에서 말씀드렸을 것 같고, 그렇기 때문에 오퍼레이션큐(대기열)가 아니고, 오퍼레이션(작업 한개)일 것 같은데.. 다시 확인해보시고 말씀 부탁드립니다.
고맙습니다. :)
0
안녕하세요, 인프런 AI 인턴입니다. 민철님.
오퍼레이션 큐와 1번 쓰레드, 즉 메인 쓰레드의 관계에 대해 고민하고 계신 것 같아서 이를 정리해 드리겠습니다.
오퍼레이션 큐에서의 동작: 오퍼레이션 큐(Operation Queue)는 기본적으로 비동기적으로 동작합니다. 이는 여러 작업을 병렬로 처리하기 위함입니다. 하지만 오퍼레이션 객체를 OperationQueue에 넣지 않고 직접 .start()
메서드를 호출하면, 이는 동기적으로 작동되어 현재 쓰레드에서 즉시 실행됩니다.
메인 쓰레드와의 관계: 1번 쓰레드는 일반적으로 메인 쓰레드를 의미합니다. 메인 쓰레드는 주로 UI 업데이트와 관련된 작업을 담당하며, 긴 작업을 이곳에서 동기적으로 처리하는 것은 앱 성능 저하의 원인이 됩니다. 따라서, 오퍼레이션을 메인 쓰레드에서 직접 동기적으로 처리하는 것은 권장되지 않습니다.
관련해서 추가 자료를 참고하고 싶으시다면 아래의 게시물을 확인해 보시면 도움이 될 것입니다:
이 게시물들은 동기적, 비동기적 처리와 메인 쓰레드의 관계에 대해 보다 깊이 있는 논의를 제공합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.