스레드 우선순위를 쳐요
앵간하는 실력이면 스레드 우선순위를 건드려서 상호 배제를 치는 수도 있게쩌.
2주 전에 게임 개발자 유튜브에서 srw락 얘기가 나왔고 while 루프를 사용하여서 상대 스레드와 상호작용 하는데 락을 사용하지 아니하여 리소스를 절약하면서 반응 지연을 단축하면 좋다고 했어요.
구글 검색 ai에서는 이케 나와요
Slim Reader/Writer (SRW) locks in Win32 are a synchronization primitive designed for efficient access to shared resources within a single process. They are optimized for speed and low memory footprint.윈도우에서도 자체적으로 지원하는 api가 있는거 같은데 사실 구현하기 나름이고 굳이 커널에 제어 권한을 놓지 않아도 될거여요.
이런데도 빈 while 루프는 앵간하기에 cpu 자원을 지나치게 낭비하는 여지가 있어요. 이거는 스레드 우선순위는 일정한 시간 동안 cpu를 대여해주는 원리이어서 스레드 우선순위가 높음 빈 명령어 수행에 시간 낭비가 심하여 망하게쩌.
c# - What does setting Thread.Priority = Lowest really mean? - Stack Overflow
(위에 앵간이 오래된 스레드 우선순위 글)
윈도우에는 포그라운드 스레드와 백그라운드 스레드로 나누어 대여 시간을 여럿 단계로 구분하기에 ..
임베디드에서는 sleep 구현을 하려고 빈 while 루프를 사용해요. 애는 멀티 태스크에 계넘이 없어서 1초를 지연하는 동안 어떠한 작동도 할 수 없쩌. 사실 1초 (10초 이거나 ..)면 워치독 인터럽트를 예약하여 기다리는 동안 다른 처리를 하면 되어요.
음 .. 사실 서버에서는 태스크 잡을 사용하기에 비동기 처리인데 굳이 스레드 우선순위를 건드리지 않을거 같은데요. 이거는 락 벨류를 확인하고 Task.Yield() 처리를 하게쩌.
언제나 .. sleep (delay 이거나) 사용을 걸러야 해요.
