분류 전체보기
-
C++ 멀티스레드 동기화, 이벤트 사용법C++/C++ 멀티스레드 2022. 10. 12. 20:38
저번 시간까지 멀티스레드 환경에서 lock을 기다릴 때 사용할 수 있는 방법으로 두 가지를 알아보았습니다. 1. spinlock(무한정대기) 2. sleep(랜덤한 시간동안 대기) 이번에는 3번째 방법인 이벤트를 사용하는 방법에 대해서 알아보도록 하겠습니다. 저번에 들었던 헬스장 예시를 다시 들어볼게요. 사용하고 싶은 헬스기구를 다른 사람이 사용하고 있다. 나는 헬스기구에 자리가 나면 사용할 예정이다. 1. spinlock은 기구 뒤에서서 무작정 기다리는 방법이고 2. sleep은 일정시간동안 다른 곳에서 기다리다가 자리가 났는지 확인하는 방법입니다. 세 번째방법인 이벤트 방법은 이런겁니다. 어이~ 김비서! 나 밖에서 쉬고있을테니까 여기 자리나면 나한테 알려줘! 이 개념을 C++에서 나타내면 다음과 같이..
-
대학교에서 아싸로 산다는 것1 - 아싸되는 방법지나온이야기 2022. 10. 11. 21:05
안녕하세요. 저는 올해 대학교 졸업을 앞두고 있는 4학년 학생입니다. 이제 수능까지 한 달정도 남았는데요. 수능이 끝난 학생들에게 가장 큰 관심사가 될!.......것은 원서접수겠네요...? 그 다음으로 관심사가 될 대학생활에 대해서 제 경험을 공유해보도록 하겠습니다. 다양한 대학생의 생활상 중 하나로 읽어주시면 감사하겠습니다. 대학교에서 아싸로 산다는 것1 - 아싸되는 방법 대학교에서 아싸로 산다는 것2 - 학교생활(혼밥, 혼강, 혼자) 대학교에서 아싸로 산다는 것3 - 아싸의 장점 대학교에서 아싸로 산다는 것4 - 다시 돌아간다면 참고로 저는 2016년에 1학년으로 입학한 학생입니다. 새내기의 걱정 - 아싸가 되면 어떡하지? 20살이 되니, 법적으로 성인이 된 후에 누릴 수 있는 다양한 권리들에 대해..
-
카카오T-택시 사용법(블루, 일반, 배차취소, 목적지변경)TIPs 2022. 10. 10. 23:47
안녕하세요. 오늘은 편리하게 택시를 불러서 내 집앞에서 탈 수 있는 방법을 알아보겠습니다. 저는 집에서 시외버스를 타러 터미널에 가거나 할 때 일반적으로 시내버스를 타고 갑니다. 하지만, 짐이 너무 많거나, 일정상 버스시간이 촉박한 경우에는 택시승강장까지 갈 시간조차 아까워서 카카오T로 콜택시 서비스를 자주 이용하곤 하는데요. 처음에 카카오T를 이용할 때는 어떻게 호출해야하고, 목적지는 어떻게 설정하고 돈은 어떻게 결제되는지 등 궁금한 것이 많았던 기억이 있습니다. 그래서 오늘은 카카오T를 이용해서 택시를 내 집 앞으로! 혹은, 원하는 장소로 부르는 방법에 대해서 알아보도록 하겠습니다. 앱 설치하기 플레이스토어 혹은 앱스토어에 들어가서 카카오T를 검색하고 어플을 다운 받습니다. 다운을 받았으면, 어플을 ..
-
C++, Sleep을 이용한 Lock구현C++/C++ 멀티스레드 2022. 10. 10. 11:52
이전 포스팅에서는 spinlock을 구현해봤다. spinlock은 lock을 얻기위해서, 기한없는 대기를 하는 방법이다. https://bethetitan.tistory.com/9 C++ SpinLock구현 SpinLock은 앞선 포스팅에서 말한 존버메타 lock이다. 즉, lock을 다른 스레드가 사용중이면, 그 앞에서 lock이 풀릴때까지 계속 기다리는 것이다. 이거를 한 번 구현해보자. 들어가기에 앞서, 멀티스 bethetitan.tistory.com spinlock을 이용할 경우, CPU를 더 효율적인 곳에 사용하지 못하고, 가만히 놀게 하는 것과 다름없으므로, lock을 가진, thread가 lock을 빨리 해제하지 않는 경우에는 비효율적이라는 단점이 있다. 그래서 오늘은 lock이 잠겨있다면,..
-
컴퓨터 활용법 - 캡처하기(부분캡처, 전체화면캡처, 스크롤캡처)TIPs 2022. 10. 9. 21:29
안녕하세요! 컴퓨터를 사용할 때, 내가 보고있는 화면을 사진을 찍어서 누군가에게 보여주고 싶거나, 문서에 추가하고 싶거나 하는 경험 다들 있으셨을 텐데요. 그럴 때 스마트폰 카메라로 찍어서 전송하는 것보다 훨씬 깔끔하고, 간단한 방법을 알려드리도록 하겠습니다. 바로 "캡처"라고 하는 것인데요. 스마트폰에서는 익숙하게 하는 캡처를 PC에서도 할 수 있습니다! 이렇게, 캡처한 사진은, 카카오톡, 한글, 워드, 파워포인트 등에서도 아주 간편하게 추가하고 전송할 수 있는데요. 그 방법에 대해서도 알아보도록 하겠습니다. PrintScreen버튼 키보드에 보면 Print Screen이라는 버튼이 있습니다. PS, PrtSc, PrintScreen등 다양하게 표시되어있는데, 보통 이런 위치에 있습니다. 이 버튼을 누..
-
C++, volatileC++/C++ 기타 2022. 10. 9. 14:25
c++에서 volatile의 의미는 컴파일러에게 최적화를 하지 말라는 의미이다. visual studio에서 실행모드를 release모드로 바꾸고 다음과 같은 코드를 실행해보자. 출력하는 곳에 중단점을 찍고 디버그를 해서, 디스어셈블리해보면, 이렇게 나온다. a에 값을 할당하는 일련의 코드들이 실행되지않는것이다. 이는, 컴파일러가 "어차피 출력하는 건 a에 3이 들어간것이고, 그 이전의 값은 사용되지도 않는데, 뭐하러 하나??" 라고 생각하여 최적화한 결과이다. 이 때 volatile 키워드를 사용하면, 다음과같이 변경된다. a의 값에 1, 2, 3을 차례로 할당해주고 있다. 그러니까 volatile은 아니 비효율적인거 아는데, 일부러 한거니까 최적화 하지말고 냅둬! 라는 것이다. 잘 사용하진 않지만 대..
-
C++ SpinLock구현C++/C++ 멀티스레드 2022. 10. 9. 13:44
SpinLock은 앞선 포스팅에서 말한 존버메타 lock이다. 즉, lock을 다른 스레드가 사용중이면, 그 앞에서 lock이 풀릴때까지 계속 기다리는 것이다. 이거를 한 번 구현해보자. 들어가기에 앞서, 멀티스레드 프로그래밍을 할 때는, 내가 작성한 코드를 여러 스레드가 동시에 실행한다는 것을 잊지 말아야 한다. 그러지 않으면, 왜 에러가 나는지, 왜 코드가 내가 생각한대로 되지않는지 이해하기 어려워진다. #include #include #include #include class SpinLock { public: void lock() { while(_locked){} _locked = true; } void unlock() { _locked = false; } private: bool _locked =..
-
멀티스레드 Lock구현C++/C++ 멀티스레드 2022. 10. 9. 11:21
C++에서 기본적으로 제공하는 mutex, lock_guard 등을 활용하여 멀티스레드 프로그래밍이 가능하지만, 이것들이 어떻게 구현이 되었는지 간소하게나마 알아보고 직접 구현해보려 한다. lock은 기본적으로 lock상태와 unlock상태가 있다. lock상태라면, 다른 스레드가 lock을 갖지 못하고, unlock상태라면 선착순으로 하나의 스레드에게 lock을 제공할 수 있어야 한다. 그러면 어떤 스레드가 lock을 갖고 사용하고 있을 때 다른 스레드는 lock이 필요로 한다면 어떻게 해야하는가? 저번에는 화장실을 예로 들었지만, 이번에는 헬스장을 예로 들어 보겠다. 나는 헬스를 시작한지 1년정도 되었다. 헬스장에는 피크타임이 있다. 피크타임에 가면, 인기있는 헬스기구들(랫풀다운, 벤치프레스, 스쿼트..