윈도우 환경에서 루프에 최소 작동 시간을 넣고 싶은데
루프로 기다리게하니까 코어 한개를 혼자 풀로 처먹음
그래서 Sleep을 썻는데 1~3ms까지 쉬어버려서 오히려 퍼포먼스에 너무 영향을 많이 끼치는데
방법 없을까요
SetWaitableTimer, WaitForSingleObject도 Sleep과 같은 결과 아무리 짧게 쉴려해도 1~3ms..
8개의 댓글
무분별한 사용은 차단될 수 있습니다.
윈도우 환경에서 루프에 최소 작동 시간을 넣고 싶은데
루프로 기다리게하니까 코어 한개를 혼자 풀로 처먹음
그래서 Sleep을 썻는데 1~3ms까지 쉬어버려서 오히려 퍼포먼스에 너무 영향을 많이 끼치는데
방법 없을까요
SetWaitableTimer, WaitForSingleObject도 Sleep과 같은 결과 아무리 짧게 쉴려해도 1~3ms..
mtdt
베이직임? 이벤트같은 요소가없나
IOPS
파스칼이요
noeun
파스칼은 모르겠습니다. 다만 C언어 할때 아래 링크글 보고
https://docs.microsoft.com/ko-kr/windows/win32/api/synchapi/nf-synchapi-sleep?redirectedfrom=MSDN
sleep(0)으로 주고 루프 돌렸던적이 있는데 무한루프 돌때 처럼 코어를 점유하거나 하는 문제는 없었습니다.
그외 윈도우 시간 관해서는 아래 링크가 국내에서 잘 설명한것 같습니다.
https://www.sysnet.ㅔㄷ.kr/2/0/11063
IOPS
Sleep 0도 해봤는데 계속 코어 점유 하더라구요.
시간 쪽은 QueryPerformanceCounter 이용해서 체크 하고 있습니다.
noeun
옛날 코드 보니 Sleep(1)로 되어 있네여. 저도 땔감이라 이유는 잘 모르겠지만
그나마 검색 해서 아래 링크에서 찾았습니다. https://valueelectronic.tistory.com/236
a1s2d3f4g5
이거 못함
IOPS
그럼 다른 좋은 방법 있을까요
a1s2d3f4g5
내용없는 for문 10000번 돌기 이런거 해야함
코어 점유를 안하면 운영체제가 다른 스레드에게 실행권을 넘겨주는데, 한번 넘어가면 돌려받는데 16ms정도 걸릴 수 있음
유일하게 1ms아래로 보장받는건 그냥 포문 계속 돌려서 운영체제한테 뭐라도 하는거처럼 보여야함