Sleep을 사용할때 Context Switching 현상

paeksj98의 이미지

단말기 베이스이고 QT3.3에 Kernel 2.6 입니다.

Wirte 중간 중간에 1ms의 Delay 기능이 구현하려고 합니다.

for(int i=0; i<1000000; i++)
{
    res = write(m_handle, m_cBuff, Length);
    usleep(1000);   // 1ms의 delay 발생  ==>  Context Switching 발생  ==> 실제 딜레이 시간 10ms이상
}

스위칭이 일어나지 않고 1ms정도의 딜레이 시간을 유지 시키는 방법이 있을까요..??
오차범위는 10%안에 들면 좋은데 +-50%까지도 상관 없을것 같습니다.

이런 문제가 있을경우 해결 방법이 있을까요..??

yhsuk의 이미지

cpu를 소모하고라도 buzy waiting을 하면 되지 않을까요?

http://kldp.org/node/62634

http://kldp.org/node/38627

요거 되는건지 모르겠네요.

http://sourceforge.net/projects/high-res-timers/

Signature :) - "여유를 갖고 행동하되 게을러지지 말자"