반응형

모던 c++ 3

[ C++ ] atomic 개념 및 예제

뮤텍스를 통해서 전역 변수를 동기화하여 하나씩 증가시킬 수 있습니다. 그러나 일반적으로 뮤텍스와 같은 lock을 이용하여 개발하는 경우, 사용자가 잘못 사용할 때 교착 상태와 같은 문제를 야기시킬 수 있습니다. 그러므로 주의 깊게 사용해야 합니다. C++11에서는 atomic을 이용하여 뮤텍스와 같이 lock, unlock을 사용하지 않고 값을 증가시키거나 값을 감소시킬 수 있는 기능을 제공하고 있습니다. atomic : atomic 변수를 선언할 수 있는 데이터형이다.fetch_add : atomic의 멤버 함수로, 값을 증가시키는 함수입니다.fetch_sub : atomic의 멤버 함수로, 값을 감소시키는 함수입니다. aomic으로 설정된 변수에는 초기에만 값을 대입할 수 있습니다. 그 이외에는 대입..

SW/C++ 2018.11.16

[ C++ ] chrono 개념 및 예제

기존의 C++ 라이브러리는 시간을 계산하는 방법이 정밀하지 않았습니다. 최소한의 정밀하게 측정할 수 있는 시간이 10ms 정도였습니다. 다른 방법이 있었지만 C++ 표준에서 제공하는 것이 아니라 운영체제에서 제공하는 방법이었습니다. C++11에서는 나노초까지 계산할 수 있는 chrono를 추가하였습니다. #include #include using namespace std;using namespace chrono;int main(){ system_clock::time_point startTime = system_clock::now(); for (auto i = 0; i

SW/C++ 2018.11.16

[ C++ ] Lambda 개념 및 예제

C++을 사용하다 보면 함수 자체를 다른 함수의 파라미터로 넘기는 경우가 있습니다. 다음의 예를 살펴보도록 하겠습니다. template void sort(RandsomIt first, RandomIt last, Compare comp);cs template을 이용하여 정렬할 값의 시작과 끝을 알려줍니다. 비교할 함수를 받아 comp() 함수를 이용해 값을 비교합니다. 이 때 비교 함수는 우리가 정렬하는 값이 문자열인지, 숫자인지, 객체인지에 따라 임의로 전달해 주어야 합니다. 즉 함수를 파라미터로 넘겨주어야 하는 것입니다. 이런 상황이 다른 곳에서 많이 발생합니다. 따라서 비교하는 함수를 만들어 정렬할 때마다 전달해야 합니다. 하지만 이러한 함수는 굉장히 짧고 다른 곳에서 쓰이지 않을 일회용 함수일 가능..

SW/C++ 2018.11.15
반응형