위에것이 좋은게 공유자원에 접근중일 때 다른 접근이 없다면 세마포어를 생성하지 않는다.

Lock이 걸려있을 때 접근을 한다면 세마포어를 생성하고 대기상태로 들어간다.

락을 걸고있던 쓰레드가 일을 수행한 후 떠나면서 대기자를 깨워주고 나가게 된다.

혼자서 접근할때엔 세마포어를 생성하지 않기 때문에 성능이 좋다고한다.


InitializeCriticalSectionAndSpinCount 같은 경우에는 인자에 4000을 넣고있는데, 이것이 최대 대기하는 횟수? 라고한다. 점유되어 있는 자원에 대해 대기를 하는데 무한정 대기를 하면 안되는 경우가 있기 때문에 최대로 대기하는 횟수를 정하는 것이라 한다. 보통 4000을 많이 쓴다고 하는데 경우에 따라 바꿔주는것이 필요할듯 하다.

'Study > C/C++' 카테고리의 다른 글

explicit  (0) 2016.02.03
[boost] boost::asio::ip::tcp::socket에서 ip address 추출하는 방법  (0) 2015.03.25
[C++11] Thread Pool  (0) 2015.03.09
Class의 멤버함수 포인터  (0) 2015.03.09
ERROR LINK2019  (0) 2015.03.09
Posted by BeraPP
,