아하
생활

생활꿀팁

하얀고슴도치236
하얀고슴도치236

동기 , 비동기에 대한 적절한 설명을 부탁드립니다.

동기 , 비동기에 대한 적절한 설명을 부탁드립니다.

흔히들 JS는 비동기 언어이다, 무슨 언어는 동기언어이다 등 말씀을 많이들 하시는데

정확하게 동기언어, 비동기 언어의 차이점과 특성에 대하여 설명 부탁드립니다.

    55글자 더 채워주세요.
    2개의 답변이 있어요!
    • 배고픈곰11
      배고픈곰11

      동기 : 작업이 완료 될때까지 기다린다.

      비동기 : 작업이 완료 될때까지 기다리지 않는다.

      동기는 절차적인 방식으로 코딩하는 스타일로 클라이언트 프로그램을 제작할때 효율적이고,

      비동기는 데이터베이스나 서버통신과 같이 작업 요청 후 결과를 대기하는 방식으로 코딩하는 스타일로 서버 프로그램을 제작할때 효율적입니다.

      하지만 동기형 언어라고 비동기코드를 못 짜는건 아니고,

      비동기형 언어라고 동기식 코드를 못 짜는것도 아닙니다.

      이 언어는 동기형 프로그램을 작성할때 효율적이다.

      이 언어는 비동기형 작업할때 효율적이다.

      라고 표현하는게 맞습니다.

      동기와 비동기를 코드로 예를 들어본다면

      int value = syncFunction();

      // syncFunction의 작업이 완료 되기전까지는 이 아래 코드는 실행되지 않습니다.

      ... code...

      ayncFunction([](int value){ });

      // asyncFunction의 작업이 완료 되지 않아도 이 아래 코드들은 실행됩니다.

      ...code...

      일반적으로 동기형 함수는

      작업의 결과값을 return value 통해 전달한다.

      일반적으로 비동기형 함수는

      작업의 결과값을 콜백이나 이벤트 델리게이트를 통해 전달한다.

      이 정도면 되려나요?혹시 부족하면 추가 질문 부탁드립니다.

    • 동기 언어와 비동기 언어의 차이점과 특성에 대해서 질문을 해 주신거면, 일단 대부분의 언어는 동기 처리와 비동기 처리를 원하는 방식으로 구분해서 할 수 있습니다. 자바스크립트 역시 기본값은 동기로 처리하지만, 비동기로 작업을 할 수 있습니다.

      동기와 비동기의 차이를 간단하게 설명하자면 한번에 하나의 일만 혼자서 하는 것이 동기, 한번에 하나의 일을 여럿이서 하는 것 또는 한번에 여러가지 일을 여럿이서 하는 것이 비동기라고 생각하시면 됩니다.

      이게 비동기의 장점이라고 할 수 있는데, 하나의 일을 완전히 완료하기 전에 다른 일을 동시에 처리할 수 있다 보니 한번에 여러 가지의 복잡한 작업을 할 때 동기 처리에 비해서 상대적으로 유리합니다.

      하지만 간단한 작업을 할 때는 비동기를 사용하는 것보다 동기 처리가 성능적인 부분에서 조금 더 유리합니다. 이 "간단한 작업"이 어느 정도까지인지는 범위가 명확하지는 않기는 합니다.

      조금 더 깊게 들어가다보면 가변 상태 - 공유 변수 - 세마포어, 뮤텍스 - 데드락 - 함수형 언어 - 순수 함수 등 관련된 개념이 많아서, 쉽게 생각하면 쉬운 개념인데 복잡하게 생각하면 정말 복잡한 문제입니다.