728x90
thread
-
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 =..