안냐세여
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("ㅈ댐");
}
}
머리속으로 돌려봐도 문제없이될거같은디
실제로는 문제가 좀있네여
제가 어딜놓치고잇는건가여 ㅠㅠㅠㅠ
갸아아악
댓글 1설렘