Swift – 동기 / 비동기

2 답변 글타래를 보이고 있습니다
  • 글쓴이
    • 남수
      참가자
      • 글작성 : 13
      • 답글작성 : 2

      Operation Queue

      Concurrent Operation객체를 구현할 필요없이
      Operation을 Operation Queue에 제출하기만하면
      Concurrent Operation객체를 만들어 줍니다

      Dispatch Queue

      Operation을 하기에는 단순한 코드들 구현할 때 사용
      DispatchQueue()처럼
      그냥 새로만드는 객체로 만드는 큐는 Serial Queue
      Attribute를 줘야 Concurrent로 생성할 수 있어요
      쓰레드 개념을 간단하게 설명하자면
      Serial vs Concurrent
      Serial : 직렬처리
      Concurrent : 병렬처리
      Async vs Sync
      Async : 비동기
      Sync : 동기
      로 구분되요
      Serial인 경우는 직렬이기때문에 앞에 작업이있고 그뒤에 작업이 있다면
      앞의 작업이 끝나기전까지는 뒤에작업을 실행 하지않겠죠??
      반대로 Concurrent인경우는 병렬이기 때문에 여러가지 작업을 동시에 실행 할 수 있어요
      조금이라도 먼저온 작업순으로 바로바로 처리해줄 수 있어요
      Async는 비동기에요!
      비동기란 제가 작업을 맡기고 그 실행되는동안에 저는 다른 일을 할 수 있는거에요
      예를들어, 커피를 주문하고 저는 기다리는 동안 아무것도 못하는게 아니라 다른일을 할 수 있는 그런 느낌이에요
      Sync는 반대로 해당 작업이 끝날때까지 기다려야 해요
      이 개념들을 보면 약간의 혼동이 올 수 있어요…
      음..? 왜 같은데 다르지!!?
      Serial과 Concurrent는 스레드 수와 관련 있는 개념이고
      Async와 sync는 스레드 위에서의 흐름을 나타내는 거라고 생각해요
      그리고 Cocoa Aplication에서는 2개의 Queue를 지원해요
      ● main
      ○ Serial queue
      ○ Bangbang:반드시Bangbang: UI관련 task는 이곳에서 실행
      ● global
      ○ Concurrent queue ( global dispatch queue)
      ○ 동시에 하나이상의 task실행
      ○ 큐에 추가된 순서대로 시작

    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 579

      Concurrent는 병렬이라고 표현하셨는데, 병렬을 직역하면 Parallel 아닐까요?
      Concurrent와 Parallel의 차이는 무엇일까요?

    • GangWoon
      참가자
      • 글작성 : 5
      • 답글작성 : 7

       

      동시성(concurrency) 은 동시에 실행되는 작업을 말하며, 병렬(parallel) 은 하나의 작업을 작은 단위로 나눠서 동시에 실행함을 의미합니다. 

      자료는 https://docs.oracle.com/cd/E53394_01/pdf/E54803.pdf 21페이지를 참고했습니다.

2 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 743-81-02195
통신판매업 신고번호 : 제 2022-충북청주-1278 호
고객센터 : 카카오톡채널 @yagom