condition_variable 조건변수 주의점

C++의 condition_variable을 보게되면 아래의 코드가 나오는데 매번 cv.wait가  신경이 쓰였다. 일단 아래의 코드를 보자 논리적으로 보면 cv.wait의 두번째 인자가 있는이유가 딱히 없다는걸 알수있다. 헌데 왜 이코드가 들어갈까 이는 해당문서를 자세히 보면 알수있다. 위에 잘보면 이는 spurious wekeup라는 문서가 있을것이다.  이게 위키피디아에도 있는데 해당 문서를 잘보면 모든 OS에서 발생한다고 한다. https://en.wikipedia.org/wiki/Spurious_wakeup  깨우지않았는에도 불구하고 스스로 깨어지는 문제라는 것이다.더 보기

Redis 코드 삽질기(1)

이글은 redis 코드에 기여하기위해 간단한 리뷰이다.  시작시 initServer함수에서 코드의 일부분이다. 잘보면 ServerCron을 1초마다 실행시킨다.  해당 함수를 잘보면 서버가 동시접속과 리플리케이션 함수를 볼 수있게 구현이 된걸 볼수있다. ServerLog라는 함수가 있다. 이 함수는 redis의 자체적인 로그함수로 각각의 레벨이 존재한다.  이를 LL_NOTICE로 바꾸고 실행시켜보면 아래와 같이 출력된다. 참고로 listLength함수는 양방향 리스트 구조체의 길이를 구하는 매크로 함수인걸 확인할수있다. List더 보기