1. 일단 프로그램 A에서 세마포어 lock()을 걸로... 이게 풀릴 때 가지 다시 lock()을 걸어서 block을 시켜 줍니다.
2. 그 후 프로그램 B는 원하는 작업을 한 후 이 락을 종료 직전에 unlock() 하도록 합니다.
3. 프로그램 A는 B가 unlock()을 하는 순간 다시 할일 하고 종료 하도록 합니다.
=== A 의 main 흐름 ===
int main(int argc, char *argv[])
{
init_sem();
printf ( " [DEBUG] ## %s: %s: %d: A first LOCK...\n", __FILE__, __FUNCTION__, __LINE__ );
LOCK();
printf ( " [DEBUG] ## %s: %s: %d: A second LOCK...\n", __FILE__, __FUNCTION__, __LINE__ );
LOCK();
printf ( " [DEBUG] ## %s: %s: %d: A UNLOCK...\n", __FILE__, __FUNCTION__, __LINE__ );
UNLOCK();
return 0;
}
=== B의 메인 흐름 ===
int main(int argc, char *argv[])
{
init_sem();
printf ( " [DEBUG] ## %s: %s: %d: B enter sleep(5)...\n", __FILE__, __FUNCTION__, __LINE__ );
sleep(5);
printf ( " [DEBUG] ## %s: %s: %d: B leave sleep...\n", __FILE__, __FUNCTION__, __LINE__ );
printf ( " [DEBUG] ## %s: %s: %d: B UNLOCK...\n", __FILE__, __FUNCTION__, __LINE__ );
UNLOCK();
return 0;
}
대충 위와 같이 흐름을 만시고~
init_sem(), LOCK(), UNLOCK() 만 만드시면 될듯 합니다.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
이건 세마 포어를
이건 세마 포어를 이용 해서 하시면 될듯 합니다.
1. 일단 프로그램 A에서 세마포어 lock()을 걸로... 이게 풀릴 때 가지 다시 lock()을 걸어서 block을 시켜 줍니다.
2. 그 후 프로그램 B는 원하는 작업을 한 후 이 락을 종료 직전에 unlock() 하도록 합니다.
3. 프로그램 A는 B가 unlock()을 하는 순간 다시 할일 하고 종료 하도록 합니다.
대충 위와 같이 흐름을 만시고~
init_sem(), LOCK(), UNLOCK() 만 만드시면 될듯 합니다.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
감사합니다
세마포어 사용도 고려 해 봤는데
세마포어 사용이 잘 와 닫지를 않아서 고민하던중에 공유 메모리를 이용해서 해결했습니다.
답변 감사드려요~
댓글 달기