해결된 질문
작성
·
175
0
안녕하세요! 알고리즘 교안 169P에서 입출력 싱크에 대한 설명을 읽고, 궁금증이 생겨서 질문 남깁니다!
"cin과 cout은 c 라이브러리인 stdio의 버퍼와 동기화하느라 시간을 소비하기 때문이죠"
라는 설명이 cin과 cout이 C에서 사용하는 스트림의 버퍼를 사용한다는 뜻으로 이해하면 되나요?
이 게시글에서는 동기화가 될 경우, C++ 스트림의 버퍼를 사용하지 않고, C 스트림의 버퍼를 사용한다고 나와있길래 그렇게 이해하였습니다.
동기화라는 것이 특정 자원에 동시에 접근함으로써 데이터가 불일치하게 되는 문제를 막기 위해 프로세스의 순서를 정하는 것으로 알고 있는데, 이것을 교안에서 언급한 동기화 개념과 어떻게 연결지어야 할지 잘 모르겠습니다!ㅠㅠ
답변 1
0
안녕하세요 766님 ㅎㅎ
cin과 cout이 C에서 사용하는 스트림의 버퍼
>> 음 아닙니다. cin, cout은 C++의 표준 입출력이며 iostream 헤더파일에 있는 함수입니다.
https://cplusplus.com/reference/iostream/cin/
Object of class istream that represents the standard input stream oriented to narrow characters (of type char
). It corresponds to the C stream stdin.
잠깐 공식문서 글을 볼까요? 이부분을 보시면 이는 C의 stdin에 해당한다라는 뜻이며 C의 스트림버퍼라고는 볼 수 없습니다.
동기화라는 것이 특정 자원에 동시에 접근함으로써 데이터가 불일치하게 되는 문제를 막기 위해 프로세스의 순서를 정하는 것으로 알고 있는데, 이것을 교안에서 언급한 동기화 개념과 어떻게 연결지어야 할지 잘 모르겠습니다!ㅠㅠ
>> 네 알고계신게 맞습니다.
순서를 정하는게 맞구요.
예를 들어
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
이걸 하게 되면
cin
scanf
이렇게 코드가 되어있을 때 명백히 cin부터 실행이 되어야 하는데 scanf부터 실행이 되버릴 수도 있게 됩니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.