안냐세여

semaphore 두개만으로
스레드의 "순서" 동기화랄까나~ 하려는데
시그널은 이용안하구여 (시그널 핸들러 만들기 귀찮아여)

근디 제 상식으로는 이게 잘될거같은데 안되네요.

binary semaphore 두개 선언했구여
간단하게 함수만들어서 사용하구있어요

semaLock(int idx);
idx 번째 semaphore 를 lock하구요
semaUnlock(int idx);
네 idx번째 sema unlock해주구여.

아래는 간략화한 소스입니다.
cnt 는 전역변수구요 clone으로 알아서 옵션잘넣어서 전역변수는 같이 쓰게햇어요. 스레드처럼.

int foo()
{
    while(1)
    {
        semaLock(1);
        cnt++;
        printf("foo() : %d ", cnt);
        semaUnlock(0);
    }
}

int main()
{

    semaLock(0);
    semaLock(1);


    clone(foo()); //간략화함 그냥 프로세스 하나 생성한다보심댐.

    while(1)
    {
        semaUnlock(1);
        semaLock(0);
        cnt--;
        printf("main() : %d ", cnt);
        if( cnt != 0 || cnt != 1 )
        {
            printf("ㅈ댐");
        }
}



머리속으로 돌려봐도 문제없이될거같은디
실제로는 문제가 좀있네여

제가 어딜놓치고잇는건가여 ㅠㅠㅠㅠ