프로세스 경쟁조건에 대해 .

익명 사용자의 이미지

fork에 의한 부모자식간의 프로세스 A 와 B에서
어느 한쪽에 sleep(2)을 두었다해서 반드시 그쪽이 (sleep이 없는쪽보다)
나중에
수행되는것이 보장되지는 않죠?

가령,
pid = fork();
if (pid > 0 ) /* parent */
{
do_something();

}
else if ( pid == 0 ) /* child */
{
sleep( 2 ); ---> 이렇게 한다고 해서 자식의 do_something()이
항상 부모보다 나중에 수행되는것을 보장할수
있나요?

do_something();

}

익명 사용자의 이미지

OS의 process scheduler와 장비에 따라 다르겠지만 특정시간 이상을 한쪽
에서 sleep한다면 보장 할 수도 있지 않을까요?

하지만 대개의 경우 fork된 이후 특정 parent나 child중 어떤 것이 먼저
실행되어야만 할 때에는 signal이나 IPC를 이용하죠...